android 主题 设置统一背景_Android 10适配要点,深色主题

本文详细介绍了如何在Android 10中进行深色主题适配,包括使用Force Dark的简单方法及其局限性,以及更推荐的手动适配方式。通过创建values-v29目录和DayNight主题,实现应用在深色主题下的良好显示。此外,还讨论了如何处理标题栏和悬浮按钮的颜色,以及如何在代码中动态判断和切换深色主题。
摘要由CSDN通过智能技术生成

Android 10.0及以上系统的手机,都可以在Settings -> Display -> Dark theme中对深色主题进行开启和关闭。开启深色主题后,系统的界面风格包括一些内置的应用程序都会变成深色主题的色调,如下图所示。

072efa44638f3de10e42aaeb5774a9e7.png

不过,如果这时你打开我们自己编写的应用程序,你会发现目前界面的风格还是使用的浅色主题模式,这就和系统的主题风格不同了,说明我们需要对此进行适配。

这里我准备使用在第12章中编写的MaterialTest项目来作为示例,看看如何才能让它更加完美地适配深色主题模式。(示例下载地址见链接随书下载部分 https://www.ituring.com.cn/book/2744)。

首先看一下MaterialTest项目的初始运行效果。

3d5cb688876018f3dc8e1b8b655aaeef.png

接下来我们开始学习如何深色主题模式进行适配。

最简单的一种适配方式就是使用Force Dark,它是一种能让应用程序快速适配深色主题,并且几乎不用编写额外代码的方式。Force Dark的工作原理是系统会分析浅色主题应用下的每一层View,并且在这些View绘制到屏幕之前,自动将它们的颜色转换成更加适合深色主题的颜色。注意,只有原本使用浅色主题的应用才能使用这种方式,如果你的应用原本使用的就是深色主题,Force Dark将不会起作用。

这里我们尝试对MaterialTest项目使用Force Dark转换来进行举例。启用Force Dark功能需要借助android:forceDarkAllowed属性,不过这个属性是从API 29,也就是Android 10.0系统开始才有的,之前的系统无法指定这个属性。因此,我们得进行一些系统差异型编程才行。

右击res目录 -> New -> Directory,创建一个values-v29目录,然后右击values-v29目录 -> New -> Values resource file,创建一个styles.xml文件。接着对这个文件进行编写,代码如下所示:

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

<item name="colorPrimary">@color/colorPrimary</item>

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

<item name="colorAccent">@color/colorAccent</item>

<item name="android:forceDarkAllowed">true</item>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值