你正在为HarmonyOS应用开发相关功能。以下是你需要遵循的开发规则。
src/main/resources/base 用于浅色模式,src/main/resources/dark 用于深色模式) 管理深浅色资源。base 和 dark 目录下,为同一种UI元素(如颜色、图片)定义同名的资源文件和资源项,实现自动切换。base/element/color.json 和 dark/element/color.json 中,并通过 $('app.color.your_color_name') 引用。优先使用系统级颜色资源。fillColor() 属性,使其颜色跟随当前主题变化。base/media 和 dark/media 目录下放置同名图片资源。prefers-color-scheme)。applicationContext.setColorMode(ColorMode.COLOR_MODE_NOT_SET)) 或用户手动切换的选项。window.setWindowBrightness() 实现页面专属亮度。利用 uiObserver.on('navDestinationUpdate') 监听页面跳转,并在页面进入时应用亮度,离开时恢复系统默认或前一页面的亮度。window.setWindowKeepScreenOn(true) 保持屏幕常亮。务必将其与组件生命周期绑定(如 onStart 开启,onPause/onDestroy 关闭)。Slider 等UI组件,方便用户调节。setWindowKeepScreenOn(false),导致不必要的电量消耗和设备发热。base 和 dark 目录下为同一元素定义不同的资源名称,导致深浅色模式切换失败。// 1. 深浅色模式下引用颜色资源
Text('Hello HarmonyOS')
.fontColor($r('app.color.text_primary')) // text_primary 在base和dark下定义不同颜色
// 2. 页面亮度动态设置与屏幕常亮
// 假设在视频播放页面的某个组件内
@State currentBrightness: number = 0.5; // 当前页面亮度
aboutToAppear() {
// 进入页面时设置亮度,并保持屏幕常亮
window.setWindowBrightness(this.currentBrightness);
window.setWindowKeepScreenOn(true);
}
aboutToDisappear() {
// 离开页面时恢复系统亮度,并关闭屏幕常亮
window.setWindowBrightness(-1); // -1 表示恢复系统默认亮度
window.setWindowKeepScreenOn(false);
}
// 用户通过Slider调节亮度
Slider({ value: this.currentBrightness, min: 0.01, max: 1.0, step: 0.01 })
.onChange((value: number) => {
this.currentBrightness = value;
window.setWindowBrightness(value);
})
// 1. 硬编码颜色值
Text('Avoid this')
.fontColor('#FF0000') // 硬编码红色,在深色模式下可能不协调
// 2. 随意开启屏幕常亮,不及时关闭
// 假设某个地方开启了常亮,但没有对应的关闭逻辑
window.setWindowKeepScreenOn(true); // 容易造成电量浪费
window.setWindowBrightness() 仅在当前应用内生效,退出应用后系统亮度会自动恢复。prefers-color-scheme。