6

从 Android 10 开始,您可以在暗模式和默认亮模式之间切换。我还没有对此进行任何更深入的研究,因为这是一个新话题。暗模式颜色切换是否由操作系统自动切换,或者如果开启暗模式,是否有办法告诉我的应用程序切换不同的应用程序主题?某些 Android 9 设备也可以使用暗模式。

因为我使用自定义参数制作了自定义深色主题,并且我为资源中的每种颜色设置了深色(使用自定义属性attrs.xml并将特定颜色资源应用于主题中的主题styles.xml)。同样,它适用于我的应用程序的不同配色方案(例如蓝色、红色、绿色)。这样我就可以知道哪种颜色将用于我的应用程序而不是系统中的不同视图。

我唯一需要的是检测系统中的暗模式是否打开/关闭。我可以强制用户在应用设置(自定义设置)中打开暗模式,但主题可能会受到系统暗模式(在电话设置中打开)的影响。

4

1 回答 1

9

来自官方文档

为了支持 Dark 主题,您必须将应用程序的主题(通常在 res/values/styles.xml 中找到)设置为从 DayNight 主题继承:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

您还可以使用 MaterialComponents 的深色主题:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">

这将应用程序的主主题与系统控制的夜间模式标志联系起来,并为应用程序提供默认的黑暗主题(启用时)。

这意味着如果您使用 DayNight 主题,操作系统本身会处理应用程序主题。如果您想强制应用程序使用深色主题,请查看文档。

更新:

检测设备主题:

switch (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
    case Configuration.UI_MODE_NIGHT_YES:
        …
        break;
    case Configuration.UI_MODE_NIGHT_NO:
        …
        break; 
}
于 2019-12-11T06:46:06.273 回答