HarmonyOS 鸿蒙Next 跟随系统时怎么获取当前是浅色还是深色,来设置状态栏的颜色

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

HarmonyOS 鸿蒙Next 跟随系统时怎么获取当前是浅色还是深色,来设置状态栏的颜色 由于我在深色模式需要设置状态栏的颜色,我不太明白的是如何在跟随系统的情况的下去获取到当前是深色还是浅色,并根据变量判断是否对状态栏的颜色做出改变。

以下是浅色状态栏的颜色变化:

let windowClass = windowStage.getMainWindowSync()
windowClass.setWindowSystemBarProperties({
  statusBarColor: '#00000000',
  statusBarContentColor:'#202020'
})

以下是深色状态栏的颜色变化:

let windowClass = windowStage.getMainWindowSync()
windowClass.setWindowSystemBarProperties({
  statusBarColor: "#202020",
})

更多关于HarmonyOS 鸿蒙Next 跟随系统时怎么获取当前是浅色还是深色,来设置状态栏的颜色的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复
onPageShow(): void {
  window.getLastWindow(getContext(), (err, data) => {
    let win: window.Window;
    if (err.code) {
      console.error("error code :" + JSON.stringify(err.code))
      return;
    }
    try {
      win = data;
      //设置窗口为全屏模式
      win.setWindowLayoutFullScreen(true);
      // 设置状态栏
      win.setWindowSystemBarProperties({
        // 设置状态栏颜色为其他颜色
        statusBarColor: '#00ff00',
        // 设置状态栏文本颜色为白色
        statusBarContentColor: '#353535'
      })
      console.info('带状态栏沉浸式窗口设置完成')
    } catch (expextion) {
      console.error("error cause :" + JSON.stringify(expextion))
    }
  })
}

如果需要在A页面和B页面变更手机状态背景颜色及文字颜色,可以在两个页面都使用setWindowSystemBarProperties()方法设置状态栏的颜色。沉浸式参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-develop-apply-immersive-effects-V5

更多关于HarmonyOS 鸿蒙Next 跟随系统时怎么获取当前是浅色还是深色,来设置状态栏的颜色的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


应用可以主动监听系统深浅色模式变化,进行其他类型的资源初始化等自定义逻辑。无论应用是否跟随系统深浅色模式变化,该监听方式均可生效。

具体可参考官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-light-dark-color-adaptation-V5#section1671931972712 ,上述代码设置为跟随系统时,应用并不会刷新为当前系统的深浅色模式。

请问是第四点吗

应用监听深浅色模式切换事件

应用可以主动监听系统深浅色模式变化,进行其他类型的资源初始化等自定义逻辑。无论应用是否跟随系统深浅色模式变化,该监听方式均可生效。

onConfigurationUpdate这个生命周期应该放在那个位置啊,我放在entryability要报错,

具体报什么错啊,有可能是没包含头文件,试下包含:

在HarmonyOS 鸿蒙Next系统中,要获取当前系统主题(浅色或深色模式)并据此设置状态栏颜色,可以使用系统提供的API。具体步骤如下:

  1. 获取当前主题模式: 使用Configuration类来获取当前系统的主题模式。在HarmonyOS中,可以通过系统的Configuration对象来检查当前是否处于深色模式。

  2. 设置状态栏颜色: 根据获取到的主题模式,通过WindowManager或相应的UI框架API来设置状态栏的颜色。例如,如果系统处于深色模式,则设置深色状态栏;反之,则设置浅色状态栏。

示例代码(伪代码,具体实现需参考HarmonyOS SDK文档):

// 注意:此示例为伪代码,实际应使用HarmonyOS对应的API
Configuration config = getResources().getConfiguration();
int uiMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
boolean isNightMode = (uiMode == Configuration.UI_MODE_NIGHT_YES);

if (isNightMode) {
    // 设置深色状态栏
    setWindowStatusBarColor(darkColor);
} else {
    // 设置浅色状态栏
    setWindowStatusBarColor(lightColor);
}

注意:上述代码仅为示例,实际开发中需使用HarmonyOS提供的具体API。HarmonyOS的API可能与Android有所不同,请查阅HarmonyOS官方文档获取准确信息。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部