Android Q 推出了深色模式,其实 Android 9 就有了,部分厂商小米,三星就在系统 Android 9 加入了深色模式的开关。
Android 提供了一套夜间模式主题,继承 Theme.MaterialComponents.DayNight.NoActionBar 主题即可。
然后在 res 文件夹创建 values-night 将深色模式的 color.xml 拷贝过来,系统在深色模式下会自动识别该目录下的 color 信息。当然,除了 color 之外的资源也是一样的。
同理 drawable 同样可以创建一个 drawable-night 来区别不同的资源。
判断深色模式
系统有几个 mask 值:
// 深色
public static final int UI_MODE_NIGHT_YES = 0x20;
// 浅色
public static final int UI_MODE_NIGHT_NO = 0x10;
复制代码// 判断是否是深色
context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES
复制代码// 全局设置夜间模式
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
// 在 App 内部切换主题的时候重新创建 Activity 以应用
recreate()
复制代码
初次进入 App 的时候,如果需要指定 Dark Mode,在你的 Applicati