多项活动中的暗模式

Posted

技术标签:

【中文标题】多项活动中的暗模式【英文标题】:Dark mode in multiple activities 【发布时间】:2020-10-18 17:54:11 【问题描述】:

是否可以使用单个切换开关在多个活动上实现暗模式?或者只有在片段的帮助下才有可能。

请多多包涵,我是 android 开发新手,完全是初学者。

【问题讨论】:

【参考方案1】:

是的,当然,您可以像这样轻松地为应用中的所有片段处理暗模式:

//for dark mode
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
// for removing dark mode
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)

如果您在更改为暗模式后看到片段没有变化,那是因为您在片段中定义了一种颜色,并且您没有在 res>values>colors 中为暗模式定义颜色。 为此,您可以轻松转到 res>values>colors,然后右键单击 > New> values Resource Files > 选择一个名称,然后在 Available Qualifiers 中选择夜间模式,现在您将拥有 一个 colors.xml 文件和 一个 colors.xml(night) 文件 具有相同名称但特定于该模式的不同值的颜色(暗/正常)

【讨论】:

【参考方案2】:

一个棘手的解决方案是在任何类中使用静态布尔变量。 一开始,

public static boolean darkMode = false;

如果暗模式按钮被按下,设置

NameOfTheClass.darkMode = true;

在所有activity的onCreate()中,如果darkMode == true则设置背景色为黑色。

【讨论】:

【参考方案3】:

您可以存储用户的偏好并在应用启动时加载它们。例如,作为一个公共静态布尔值,只需调用每个活动或创建一个为您完成工作的 CustomAppCompatActivity 类。不管怎样。你必须要有创意。

【讨论】:

以上是关于多项活动中的暗模式的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式检测 SwiftUI 中的暗模式以显示适当的图像

UIUserInterfaceStyle 键在 Xcode 12 的 Info.plist 中不可用,如何从 Info.plist 禁用 Xcode 12 中的暗模式?

在 Android Studio 中以编程方式从应用程序触发系统的暗模式

Xcode 11 -- SwiftUI 的暗模式设置

如何为设备的暗模式和亮模式固定背景颜色

SFSafariViewController 没有带有自定义条形颜色的暗模式