#鸿蒙通关秘籍#如何动态更新深色模式的UI布局?

HarmonyOS
2024-12-05 15:57:11
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
暮s苍HTTPS

为实现动态更新UI布局,可以采取如下步骤:

  1. 保存当前颜色模式和windowStage:

    AppStorage.setOrCreate('currentColorMode', this.context.config.colorMode);
    AppStorage.setOrCreate('windowStage', windowStage);
    
  2. FitForDarKMode.ets中通过@StorageProp@Watch获取并监听当前颜色模式:

    @StorageProp('currentColorMode') @Watch('onColorModeChange') currentMode: number = 0;
    
    onColorModeChange(): void {
      if (this.currentMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK) {
        this.banner = $r("app.media.dark_mode_banner");
      } else {
        this.banner = $r("app.media.light_mode_banner");
      }
    }
    
  3. 在生命周期aboutToAppear中设置banner状态:

    aboutToAppear(): void {
      if (this.currentMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK) {
        this.banner = $r("app.media.dark_mode_banner");
      } else {
        this.banner = $r("app.media.light_mode_banner");
        setStatusBar(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
      }
    }
    
  4. 在生命周期aboutToDisappear中重置导航栏背景色:

    aboutToDisappear(): void {
      setStatusBar(this.currentMode)
    }
    
分享
微博
QQ
微信
回复
2024-12-05 16:59:28
相关问题
Java UI中WebView支持深色模式吗?
2840浏览 • 1回复 待解决
应用如何适配深色模式
1279浏览 • 1回复 待解决
HarmonyOS 深色模式
155浏览 • 1回复 待解决
应用如何适配深色模式
2482浏览 • 1回复 待解决
HarmonyOS 如何禁用深色模式
23浏览 • 1回复 待解决