通过支持AndroidQ的黑暗模式来帮助开发者更新他们的应用程序

导读 在我们的第一篇文章中,我们详细介绍了我们从正在开发的安卓Q版本中发现的变化,并简要介绍了大家都很兴奋的黑暗模式。综上所述,谷歌在安

在我们的第一篇文章中,我们详细介绍了我们从正在开发的安卓Q版本中发现的变化,并简要介绍了大家都很兴奋的黑暗模式。综上所述,谷歌在安卓Q中内置的暗模式可以通过“显示设置”中新增的“暗模式”选项来启用。黑暗模式可以总是关闭、总是开启,或者在晚上自动启用,在早上禁用。暗模式主要关注SystemUI(音量面板、电源菜单、快速设置面板、通知)、设置应用和框架(强调色等)。).

谷歌不仅仅希望系统元素是黑暗的。他们还努力确保当用户按下开关时,所有第一方应用程序都支持黑暗模式。谷歌应用程序,如消息、电话、联系人、新闻、玩游戏、YouTube、地图等。已经通过面向用户的黑暗模式切换进行了更新,而谷歌Chrome浏览器等其他应用程序仍在解决谷歌I/O 2019之前的任何问题。谷歌也开始鼓励第三方应用开发者在他们的应用中使用拥抱黑暗的主题,因为该公司认识到电池寿命很长(至少在配备有机发光二极管显示器的智能手机上)。

为了通过支持安卓Q的黑暗模式来帮助开发者更新应用,谷歌提供了一个新的开发者选项,该选项似乎会强制所有应用都改为黑暗模式。该选项不适合想要将所有内容置于暗模式的用户,因为系统很难为没有本机暗模式的所有应用选择正确的颜色。幸运的是,谷歌已经为支持暗模式的应用打下了基础,即使应用不具备切换暗模式的面向用户的功能,但很多应用在启用了覆盖安卓Q暗模式的选项后看起来还是不错的,这是来自24个不同应用的截图集合,展示了使用安卓Q而不是暗模式切换是如何给它们强加暗模式的。并不是每个应用程序看起来都很好,如下所示。

在安卓Q中实现暗模式

在API级(Android 2.2 Froyo)中,谷歌引入了夜间限定符来获取资源。应用程序开发人员可以在UiModeManager中使用setNightMode在白天和夜晚模式之间切换。但是,如果设备处于API级别22或更低,setNightMode要求设备处于汽车模式或停靠模式。AppCompat v23.2引入了DayNight的实现,它使Reddit客户端等应用程序能够使用AppCompat DELETEGATE。设置默认夜间模式(),根据一天中的时间自动在白天和夜间主题之间切换。API级别28(Android 9 Pie)使MODE_NIGHT_FOLLOW_SYSTEM(默认值setDefaultNightMode())符合“设置-开发人员选项-夜间模式”中用户定义的系统设置。谷歌正在努力改进AppCompat中的DayNight API,尤其是在WebView问题等“经常遇到的问题”方面。最后,谷歌在没有MODIFY_DAY_NIGHT_MODE的签名/权限许可的情况下,启用了夜间模式检测功能,并在安卓Q框架中屏蔽了该应用。后者的改变意味着应用程序无法再修改系统范围内的夜间模式,这也是Android Pie中的用户对最近的Messages错误感到困惑的原因。

更新:AndroidX支持库的更新将使开发人员在设备进入省电模式时,更容易在应用程序中自动启用黑暗模式。

在安卓q中强制黑暗模式。

Snapchat、Slack、AOSP电子邮件、AOSP消息、AOSP拨号器和其他应用程序都有夜间资源限定符,即使它们没有为用户提供在夜间模式下使用应用程序的方法。其他没有硬编码夜间资源限定符的应用(如脸书和Instagram)在打开或关闭Android Q的封面深色主题后可能看起来不错,也可能不太好,Instagram看起来不错,脸书需要做很多工作。根据我的测试,覆盖夜间模式的开发者选项与辅助功能设置中的颜色反转有很大的不同——也许谷歌打算在安卓Q开发者预览期间使用这个功能来帮助开发者为他们的应用创建一个黑暗模式。然而,直到安卓Q的源代码发布或者谷歌发布了这个功能的文档,我们才确切知道这个功能是如何工作的。

在谷歌的Chris Banes和Alan Viverette提出的“像素色彩成本”的演讲中,他们鼓励开发者通过以下方式实现黑暗主题:

在AppCompat中使用DayNight API。清单小部件将自动响应夜间模式的变化,或者您可以向应用程序添加一个开关。

p>

通过调用getTheme()。applyStyle()在运行时动态应用覆盖主题。更多信息可以在这个早期的谈话中找到 这里。

构建您的应用程序以依赖使用主题属性,例如colorForeground,colorControlNormal,colorAccent等。

为您的资源添加-night限定词。-night限定词应用于难以提取主题颜色的资源。

启用颜色反转模式(“设置”->“颜色”->“颜色反转”)可以快速了解您的应用在黑暗模式下的外观。如果您想使用反色来制作应用程序的屏幕截图,则应注意,颜色反转不会显示在屏幕截图中。

在发布时,Android Q的暗模式将扩展到第一方Google应用,但我们希望第三方应用能够将暗主题快速应用到他们的应用中。此外,我们希望看到当用户启用系统范围的设置时,更多应用会自动更改为夜间主题。目前,我看到的唯一启用Android Q系统范围内的黑暗模式时自动更改主题的应用程序就是Google通讯录。我们将看到发布Android Q的几个月后情况如何,但对所有正在阅读此书的开发人员来说:拥抱阴暗面!