#鸿蒙通关秘籍#如何适配鸿蒙应用的深色和浅色模式?

HarmonyOS
7h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
数据小博士

在鸿蒙应用中,适配深色和浅色模式可以通过以下四种策略:

  1. 固定属性适配:将UI组件的颜色属性设置为固定值,这样在不同模式下颜色保持不变。 javascript // 将Text直接设置成'#000000'固定色值 Text("精品好礼") .opacity(0.6) .fontColor($r('app.color.fit_for_dark_mode_black_font_color')) .margin({ left: $r('app.integer.fit_for_dark_mode_text_margin_left') })

  2. 双资源目录适配:在resources目录下新增dark子目录,存放深色模式下的特定颜色配置和图片资源。 javascript // 用资源ID方式设置Column背景色。(浅色模式色值为'#FA5A3C'、深色模式色值为'#000000') .backgroundColor($r('app.color.fit_for_dark_mode_column_bg_color'))

  3. 利用系统分层参数:使用系统提供的具有层级参数的颜色资源,自动适应设备的主题切换。 javascript // 用系统提供的分层参数颜色资源方式设置色值 Text(item.price) .fontSize($r('app.integer.fit_for_dark_mode_goods_font')) .offset({ x: -3 })// 中文字符宽度对齐 .fontColor($r('sys.color.ohos_id_color_foreground'))

  4. 监听颜色模式变化:通过AbilityStage.onConfigurationUpdate事件监听器,实时捕捉设备深浅色模式切换。 javascript // 获取当前的颜色模式并保存并在onConfigurationUpdate AppStorage.setOrCreate('currentColorMode', this.context.config.colorMode); // 保存windowStage供fitfordarkmode的har包中FitForDarkPage.ets中setStatusBar方法修改状态栏颜色。 AppStorage.setOrCreate('windowStage', windowStage);

    // 检测当前的深浅模式是否发生变化,刷新状态栏 onConfigurationUpdate(config: Configuration) { // 获取最新的变更颜色并更新到AppStorage AppStorage.setOrCreate('currentColorMode', config.colorMode); logger.info(onConfigurationUpdate, config: ${JSON.stringify(config)}); }

分享
微博
QQ
微信
回复
6h前
相关问题
app适配深色浅色切换模式
1875浏览 • 1回复 待解决
应用如何适配深色模式
1008浏览 • 1回复 待解决
应用如何适配深色模式
2284浏览 • 1回复 待解决
HarmonyOS 浅色深色主题如何设置
391浏览 • 1回复 待解决
android 应用深色模式鸿蒙os上有异常
9308浏览 • 1回复 待解决