从Android 10开始,您可以在暗模式和默认亮模式之间切换。由于这是一个新主题,因此我尚未对此进行更深入的研究。 OS是否自动进行了暗模式的颜色切换,或者如果暗模式已打开,是否有任何方法告诉我的应用切换不同的应用主题?另外,某些Android 9设备也可以使用暗模式。
因为我使用自定义参数制作了自定义深色主题,并且为资源中的每种颜色设置了深色(使用styles.xml
中的自定义属性,并在{{1}}中的主题中将特定的颜色资源应用于它们) 。同样,它适用于我的应用程序的不同配色方案(例如,蓝色,红色,绿色)。这样一来,我就能分辨出哪种颜色将用于我的应用而非系统中的不同视图。
我唯一需要做的就是检测系统中是否启用了暗模式。我可以强制用户在“应用”设置(自定义设置)中打开“暗”模式,但主题可能会受到系统“暗”模式(在“电话”设置中打开)的影响。
答案 0 :(得分:2)
为了支持Dark主题,您必须将应用的主题(通常在res / values / styles.xml中找到)设置为继承DayNight主题:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
您还可以使用MaterialComponents的深色主题:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
这会将应用程序的主主题与系统控制的夜间模式标志相关联,并为应用程序提供默认的深色主题(启用时)。
这意味着,如果您使用DayNight主题,则操作系统本身会处理应用程序主题。如果您想强制应用使用深色主题,请查看this文档。
要检测设备主题:
switch (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
case Configuration.UI_MODE_NIGHT_YES:
…
break;
case Configuration.UI_MODE_NIGHT_NO:
…
break;
}