#鸿蒙通关秘籍#如何动态更新深色模式的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);
    
    • 1.
    • 2.
  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");
      }
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
  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);
      }
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
  4. 在生命周期aboutToDisappear中重置导航栏背景色:

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