【Android dark模式 初体验】

在 2019 年的 Google I/O 和 Apple WWDC 上,新露面的 Android 10 和 iOS 13 都宣布将支持 Dark Theme 也就是我们常说的暗黑模式,并提供相关 API 供开发者适配。

为什么我们需要深色模式?

可大幅减少耗电量(具体取决于设备的屏幕技术)。
为弱视以及对强光敏感的用户提高可视性。
让所有人都可以在光线较暗的环境中更轻松地使用设备。
深色主题背景同时适用于 Android 系统界面和在设备上运行的应用。

我们该怎样启动深色模式?

在 Android 10 (API 级别 29) 及更高版本中,您可以通过以下三种方法启用深色主题背景:
使用系统设置(Settings -> Display -> Theme)启用深色主题背景。
使用“快捷设置”图块,从通知托盘中切换主题背景(启用后)。 在 Pixel
设备上,选择“省电模式”将同时启用深色主题背景。其他原始设备制造商 (OEM) 不一定支持这种行为。

为你的Android App适配深色模式

适配的方式主要有三种:自动适配、自定义适配、使用 Material Design Components 进行适配.在这里,我使用了一个实例demo来展示各种方法的效果。

未适配前效果

Android 判断cpu Android 判断深色模式_自定义


Android 判断cpu Android 判断深色模式_自定义_02

自动适配 Force dark

Android 10 提供 Force Dark 功能。一如其名,此功能可让开发者快速实现深色主题背景,而无需明确设置 DayNight 主题背景。

使用方法是在style.xml的资源文件中其主题背景中设置 android:forceDarkAllowed=“true”

Android 判断cpu Android 判断深色模式_Android_03

运行效果

Android 判断cpu Android 判断深色模式_Android 判断cpu_04


Android 判断cpu Android 判断深色模式_Android 判断cpu_05


使用forceDarkAllowed自动适配十分简单粗暴,整体上看效果也基本上能让人满意,适配工作全是系统自己做的。

自定义适配

自定义适配的关键在于,避免一切硬编码的颜色值,建立 light 、night 两份 colors,通过定义相同的名字,在不同模式下显示不同的颜色。

确保当前 App 使用的主题继承自 AppCompat 或 MaterialComponents,并将之前默认的 Light 主题修改为 DayNight

两份colors资源

Android 判断cpu Android 判断深色模式_自定义_06


修改style的父类

Android 判断cpu Android 判断深色模式_Android_07


适配效果

Android 判断cpu Android 判断深色模式_Android 判断cpu_08


因为我修改了 colors-nigh文件t中状态栏和标题栏的颜色为黑色,所以这里在深色模式下也相应的变成了黑色。