HarmonyOS 鸿蒙Next中仓颉ui怎么判断当前是否是深色模式呢?

HarmonyOS 鸿蒙Next中仓颉ui怎么判断当前是否是深色模式呢?

6 回复
let context = getContext(this) as common.UIAbilityContext;
hilog.info(DOMAIN, 'testTag', 'Test colorMode ' + context.config.colorMode);
context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK)

更多关于HarmonyOS 鸿蒙Next中仓颉ui怎么判断当前是否是深色模式呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


ArkTs的写法吧?仓颉ui里面有类似方法吗?

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

是的。仓颉UI也许有吧,不过我没有找到,

在HarmonyOS中,可以通过uiMode模块判断当前是否为深色模式。使用getCurrentMode()方法获取当前UI模式,返回值为UI_MODE_TYPE_DARK表示深色模式,UI_MODE_TYPE_LIGHT表示浅色模式。示例代码:

import uiMode from '@ohos.app.ability.uiMode';

let currentMode = uiMode.getCurrentMode();
if (currentMode === uiMode.UI_MODE_TYPE_DARK) {
  // 深色模式逻辑
} else {
  // 浅色模式逻辑
}

注意:需在module.json5中声明ohos.permission.ABILITY_BACKGROUND_COMMUNICATION权限。

在HarmonyOS Next中,可以通过UIMode模块来判断当前是否为深色模式。具体实现方式如下:

  1. 导入相关模块:
import { UIMode } from '@ohos.app.ability.Configuration'
import { AbilityContext } from '@ohos.ability.featureAbility'
  1. 获取当前UI模式:
const context = getContext(this) as AbilityContext
const config = context.getConfiguration()
const currentMode = config.colorMode
  1. 判断是否为深色模式:
if (currentMode === UIMode.UI_MODE_NIGHT_YES) {
    // 当前是深色模式
} else {
    // 当前是浅色模式
}

也可以使用响应式的方式监听主题变化:

import { Configuration } from '@ohos.app.ability.Configuration'

context.on('configurationChange', (newConfig: Configuration) => {
    if (newConfig.colorMode === UIMode.UI_MODE_NIGHT_YES) {
        // 主题已切换为深色模式
    } else {
        // 主题已切换为浅色模式
    }
})

这样就可以在仓颉UI开发中灵活适配深色/浅色主题了。

回到顶部