android 深色模式适配、监听

2022-12-29 07:55:57

1、最简单的一种适配方式就是使用ForceDark

只有原本使用浅色主题的应用才能使用这种方式,如果应用使用的就是深色主题,Force Dark则不会生效的

android:forceDarkAllowed是从android 10系统才开始有的,所有res目录下创建一个values-v29文件夹,并在该文件夹创建一个styles.xml文件,复制之前应用的styles.xml中的属性到values-v29/styles.xml中,并在最后加上

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

2、将主题指定成 

parent="Theme.AppCompat.DayNight.NoActionBar"

这种主题在普通情况下依然会使用浅色主题,当切换到深色模式下就会使用深色主题

这样用的话,还有许多颜色细节需要自己再次适配

在res/下创建 values-night/colors.xml适配深色模式下的颜色

在res下创建 drawable-night,放置用于配置深色模式的一些图片资源等

3、监听系统深色模式切换

在AndroidManifest.xml中对应的 <activity>中加上

android:configChanges="uiMode"

然后在Activity的onConfigurationChanged可监听深色模式切换

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
}
/**
 * 判断是否是深色模式
 * @param context
 * @return
 */
public static boolean isNightMode(Context context) {
    try {
        return (context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
    } catch (Exception ex) {

    }
    return false;
}
  • 作者:KaiserStatic
  • 原文链接:https://blog.csdn.net/chongchi_wxcc/article/details/127186685
    更新时间:2022-12-29 07:55:57