多项活动中的暗模式
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 类。不管怎样。你必须要有创意。
【讨论】:
以上是关于多项活动中的暗模式的主要内容,如果未能解决你的问题,请参考以下文章
UIUserInterfaceStyle 键在 Xcode 12 的 Info.plist 中不可用,如何从 Info.plist 禁用 Xcode 12 中的暗模式?