HarmonyOS鸿蒙Next中如何动态监听深色模式

HarmonyOS鸿蒙Next中如何动态监听深色模式 ArkTs如何动态监听深色模式切换

4 回复
//系统的深色模式
import mediaQuery from '@ohos.mediaquery'

@Component
struct ElseIfTest {
  @State color: string = "ffffff";
  @State text: string = "dark-mode: false 原始数据"
  //系统为深色模式时为true,否则为false。
  listener: mediaQuery.MediaQueryListener = mediaQuery.matchMediaSync('(dark-mode: true)');

  aboutToAppear() {
    // 绑定当前应用实例
    // 绑定回调函数
    this.listener.on('change', (mediaQueryResult: mediaQuery.MediaQueryResult) => {
      this.onDarkMode(mediaQueryResult)
    });
  }

  // 当满足媒体查询条件时,触发回调
  onDarkMode(mediaQueryResult: mediaQuery.MediaQueryResult) {
    if (mediaQueryResult.matches as boolean) { // /系统为深色模式时为true,否则为false。
      this.color = '#00ff00';
      this.text = 'dark-mode: true 监听数据'
    } else {
      this.color = '#ff0000';
      this.text = 'dark-mode: false 监听数据'
    }
  }

  build() {
    Column() {
      Text(this.text)
    }
    .backgroundColor(this.color)
    .width('100%')
  }
}

更多关于HarmonyOS鸿蒙Next中如何动态监听深色模式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


this.context.config.colorMode?.toString()

在HarmonyOS(鸿蒙)Next中,可以通过Configuration类来动态监听深色模式的变化。具体步骤如下:

  1. 获取Configuration对象:通过AbilityContextContextgetConfiguration()方法获取当前的Configuration对象。

  2. 监听配置变化:在AbilityPage中重写onConfigurationUpdated()方法,该方法会在系统配置(包括深色模式)发生变化时被调用。

  3. 判断当前模式:在onConfigurationUpdated()方法中,通过Configuration对象的uiMode属性来判断当前是否为深色模式。uiMode的值可以通过Configuration.UI_MODE_NIGHT_YESConfiguration.UI_MODE_NIGHT_NO来区分深色模式和浅色模式。

示例代码如下:

import Ability from '@ohos.application.Ability';
import ConfigurationConstant from '@ohos.application.ConfigurationConstant';

export default class MainAbility extends Ability {
    onConfigurationUpdated(newConfig: Configuration) {
        const currentUiMode = newConfig.uiMode & ConfigurationConstant.UI_MODE_NIGHT_MASK;
        if (currentUiMode === ConfigurationConstant.UI_MODE_NIGHT_YES) {
            // 当前为深色模式
        } else {
            // 当前为浅色模式
        }
    }
}

通过以上方法,可以在鸿蒙Next中动态监听并响应深色模式的变化。

在HarmonyOS鸿蒙Next中,可以通过Configuration类动态监听深色模式的变化。首先实现ConfigurationChanged接口,重写onConfigurationChanged方法,在方法中通过ConfigurationuiMode属性检查当前是否为深色模式(UI_MODE_NIGHT_YES)。然后在组件的onStartonResume生命周期中注册监听器,使用AbilityContextregisterConfigurationObserver方法进行注册,并在onStoponPause中取消注册,确保资源释放。

回到顶部