【HarmonyOS】开启沉浸式(全屏)并动态获取窗口规避区的信息

鸿蒙开启沉浸式(全屏)并动态获取窗口规避区的信息

动态获取窗口规避区的信息在移动端开发中至关重要,它能够提升用户体验,通过确保应用在不同设备和屏幕尺寸下合理利用可用空间,避免内容被状态栏或导航栏遮挡。此外,这种技术支持响应式设计,使得页面布局能够根据设备状态自动调整适应小屏和分屏模式,确保信息的可见性和可访问性,从而解决了布局错位和内容遮挡的问题。

知识点

  1. setWindowLayoutFullScreen 设置沉浸式(全屏)
  2. AppStorage 应用全局的UI状态存储, 用来存储规避区高度
  3. @StorageProp 装饰器, 响应式获取规避区高度变化 点击查看详细文档

主要代码

   export class windowManager {
   static fullScreen(windowStage: window.WindowStage) {
    const win = windowStage.getMainWindowSync()
    // 开启沉浸式模式
    win.setWindowLayoutFullScreen(true)

    // 注册监听函数,动态获取窗口规避区的信息
    win.on('avoidAreaChange', (data) => {
      if (data.type === window.AvoidAreaType.TYPE_SYSTEM) {
        let topRectHeight = px2vp(data.area.topRect.height);
        AppStorage.setOrCreate('topHeight', topRectHeight);
      } else if (data.type == window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR) {
        let bottomRectHeight = px2vp(data.area.bottomRect.height);
        AppStorage.setOrCreate('bottomHeight', bottomRectHeight);
      }
    });
  }
  }

开启沉浸式

在EntryAbility里开启沉浸式

async onWindowStageCreate(windowStage: window.WindowStage): Promise<void> {
 // Main window is created, set main page for this ability

 windowManager.fullScreen(windowStage); // 开启沉浸式
}

UI页面使用

以获取底部导航条为例, 在@Component中通过装饰器响应式获取到bottomHeight, 在UI中直接使用

@StorageProp('bottomHeight') bottomHeight: number = 0; // 底部导航条区域的高度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值