【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来展示各种方法的效果。
未适配前效果
自动适配 Force dark
Android 10 提供 Force Dark 功能。一如其名,此功能可让开发者快速实现深色主题背景,而无需明确设置 DayNight 主题背景。
使用方法是在style.xml的资源文件中其主题背景中设置 android:forceDarkAllowed=“true”
运行效果
使用forceDarkAllowed自动适配十分简单粗暴,整体上看效果也基本上能让人满意,适配工作全是系统自己做的。
自定义适配
自定义适配的关键在于,避免一切硬编码的颜色值,建立 light 、night 两份 colors,通过定义相同的名字,在不同模式下显示不同的颜色。
确保当前 App 使用的主题继承自 AppCompat 或 MaterialComponents,并将之前默认的 Light 主题修改为 DayNight
两份colors资源
修改style的父类
适配效果
因为我修改了 colors-nigh文件t中状态栏和标题栏的颜色为黑色,所以这里在深色模式下也相应的变成了黑色。