HarmonyOS 目前沉浸式方案有两种,如果希望在特定页面情况下设置沉浸式有什么好的方案?

目前沉浸式方案有两种,一种是针对组件级别的沉浸式expandSafeArea,一种是全局的setWindowLayoutFullScreen,如果希望在特定页面情况下设置沉浸式有什么好的方案?expandSafeArea的问题在于需要给特定组件设置头部沉浸式,但是在实际开发过程中不是特定的组件位于顶部或者头部,总是动态的,而且expandSafeArea使用起来并不自由。setWindowLayoutFullScreen则正相反,使用起来自由又简单,但是部分页面适配沉浸式有很大成本,造成额外的适配工作。目前折中的做法是在在onPageShow和onPageHide期间做全局沉浸式和退出,但是置于后台或者多页面返回有概率失效。

onPageShow() {  
  WindowProxy.getInstance().setImmersiveWindows((error, windowHeight) => {  
    if (error) {  
      return  
    }  
    this.paddingTop = windowHeight  
    this.paddingBottom = WindowProxy.getInstance().getNavigationIndicatorHeight()  
  })  
}  
onPageHide() {  
  WindowProxy.getInstance().setNormalWindows()  
}

请问针对此场景有没有更好的方案?或者更加建议的解法?

HarmonyOS
2024-10-16 10:16:06
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

针对如何实现沉浸式效果,系统侧提供了两种方案(窗口全局布局【布局全屏】和组件安全区方案【绘制全屏】),对应官网文档可参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-develop-apply-immersive-effects-0000001820435461-V5?catalogVersion=V5

两种方案都有自己的特点,一个是绘制全屏,一个是布局全屏。

从灵活度上,布局全屏是最灵活的,开发者完全控制状态栏和导航栏。而针对需要单独布局UI元素到状态栏和导航条区域的场景建议使用窗口全屏布局方案处理。应用可针对自身场景来选择使用哪种方案。

分享
微博
QQ
微信
回复
2024-10-16 16:53:43
相关问题
HarmonyOS 沉浸方案
254浏览 • 1回复 待解决
HarmonyOS 底部导航条沉浸方案
303浏览 • 1回复 待解决
如何设置沉浸状态栏
2597浏览 • 1回复 待解决
屏幕旋转计算,什么方案
940浏览 • 1回复 待解决
如何设置沉浸窗口,你会吗?
1942浏览 • 1回复 待解决
HarmonyOS 关于沉浸效果开发
27浏览 • 1回复 待解决
HarmonyOS 沉浸状态栏
117浏览 • 1回复 待解决
HarmonyOS Tabs组件做沉浸失败
400浏览 • 1回复 待解决
HarmonyOS 沉浸状态栏最佳实践
308浏览 • 1回复 待解决