切换应用深浅色模式,切换应用的深浅色模式,且不跟随系统。本例从资源分类的角度实现。

切换应用的深浅色模式,且不跟随系统。本例从资源分类的角度实现。

HarmonyOS
2024-05-22 23:29:59
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
bho2000

使用的核心API

getApplicationContext(): ApplicationContext(): ApplicationContext

ApplicationContext.setColorMode(colorMode: ConfigurationConstant.ColorMode): void

核心代码解释

//resources目录结构 
-resources 
--base//浅色模式访问 
---element 
----color.json 
//color.json 
{ 
  "color": [ 
  { 
    "name": "start_window_background", 
    "value": "#FFFFFF" 
  } 
  ] 
} 
 
--dark//深色模式访问 
---element 
----color.json 
//color.json 
{ 
  "color": [ 
  { 
    "name": "start_window_background", 
    "value": "#000000" 
  } 
  ] 
}
//Index.ets 
import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant'; 
import hilog from '@ohos.hilog'; 
 
 
@Entry 
@Component 
struct Index { 
  @State message: string = 'Hello World'; 
 
  build() { 
    Row() { 
      Column() { 
        Text("light")  //应用设置颜色模式为LIGHT 
          .fontSize(40) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => {hilog.info(0x0000, 'testTag', 'before setColorMode'); 
            let context = getContext().getApplicationContext() 
            context.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT); 
            console.log('------------ appUpdateConfiguration -----------'+'DARK'); 
          }) 
          .fontColor("#ffdd1a1a") 
          .backgroundColor($r("app.color.start_window_background")) 
 
 
        Text("dark")  // 应用设置颜色模式为DARK 
          .fontSize(40) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            hilog.info(0x0000, 'testTag', 'before setColorMode'); 
            let context = getContext().getApplicationContext() 
            context.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK); 
            console.log('------------ appUpdateConfiguration -----------'+'DARK'); 
          }) 
          .fontColor("#ffdd1a1a") 
          .backgroundColor($r("app.color.start_window_background")) 
      } 
      .width('100%') 
    } 
    .backgroundColor("#ffffff") 
    .height('100%') 
  } 
}

总结:

主要难点在于:切换深浅色模式为当前较新特性,使用时需要与资源分类联动,根据系统设置访问不同目录的资源。

实现效果

注明适配的版本信息

IDE:DevEco    Studio 4.1.3.500

SDK:HarmoneyOS    4.0.10.16

分享
微博
QQ
微信
回复
2024-05-23 21:17:52
相关问题
app适配深色浅色切换模式
608浏览 • 1回复 待解决
应用如何切换夜间模式
246浏览 • 1回复 待解决
关于切换深色模式应用自动重启应用
5344浏览 • 2回复 待解决
应用如何适配深色模式
242浏览 • 1回复 待解决
应用如何适配深色模式
617浏览 • 1回复 待解决
应用如何适配大显示模式
701浏览 • 1回复 待解决
应用开发中预览器换成手表模式
8646浏览 • 2回复 待解决
Component如何监听应用前后台切换
573浏览 • 1回复 待解决
有监听应用前后台状态切换api吗
491浏览 • 1回复 待解决
如何禁止Tabs系统切换逻辑
706浏览 • 0回复 待解决
应用分类应该怎么选择?
3713浏览 • 2回复 待解决
android 应用深色模式在鸿蒙os上有异常
7887浏览 • 1回复 待解决
实现单例模式数据存储
437浏览 • 1回复 待解决
Navigation实现Tabs切换效果
511浏览 • 1回复 待解决
如何实现上下切换页面间跳转动画
792浏览 • 0回复 待解决
鸿蒙系统有儿童或者学生模式吗?
3379浏览 • 1回复 待解决