HarmonyOS 鸿蒙Next系统暗黑模式状态获取

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next系统暗黑模式状态获取

this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);
Environment.envProp(‘colorMode’, ColorMode.DARK);
const colorMode: SubscribedAbstractProperty<ColorMode> = AppStorage.prop(‘colorMode’);

咨询场景描述:
当我通过setColorMode设置app不支持暗黑模式之后, 我无法通过Environment.envProp获取正确的系统暗黑模式开关.

我需要根据暗黑模式的开关动态调整statusBarContentColor 的颜色, 如果我无法获取到正确的暗黑模式设置会导致设置错误颜色, 导致状态栏内容与背景融合不可见
 


更多关于HarmonyOS 鸿蒙Next系统暗黑模式状态获取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
可以确认下设置暗黑模式的时机,过早的话是不生效的,比如在onCreate()方法中设置是不生效的。因为这时底层还没有初始化好uicontext,可以在loadContent中调用,但是这个不是实时刷新的,需要退出应用(杀掉进程)后重新进入才能获取到数据。目前只能这样。

更多关于HarmonyOS 鸿蒙Next系统暗黑模式状态获取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,获取暗黑模式(Dark Mode)状态的方法主要依赖于系统API。以下是如何获取当前暗黑模式状态的直接方法:

  1. 使用系统设置API: HarmonyOS提供了系统设置相关的API,你可以通过调用这些API来检查当前系统是否处于暗黑模式。

    import ohos.multimodalinput.media.MediaSettings;
    
    boolean isDarkMode = MediaSettings.getSystemTheme().equals(MediaSettings.THEME_DARK);
    

    在上述代码中,MediaSettings.getSystemTheme()返回当前系统的主题,如果等于MediaSettings.THEME_DARK,则表示当前处于暗黑模式。

  2. 监听主题变化: 如果你的应用需要在主题变化时做出响应,可以注册一个监听器来监听主题变化事件。

    MediaSettings.addSystemThemeChangedListener(new MediaSettings.SystemThemeChangedListener() {
        @Override
        public void onSystemThemeChanged(int newTheme) {
            if (newTheme == MediaSettings.THEME_DARK) {
                // 处理暗黑模式
            } else {
                // 处理其他模式
            }
        }
    });
    

以上代码段展示了如何获取和监听HarmonyOS系统中的暗黑模式状态。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部