HarmonyOS 鸿蒙Next沉浸式全屏时如何获取页面顶部和底部的安全距离

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next沉浸式全屏时如何获取页面顶部和底部的安全距离

1. 在沉浸式全屏时,如何获取页面顶部和底部的安全距离(如附近图片标注)
2. 如何查询当前页面是否是沉浸式全屏。

2 回复

可以在EntryAbility里获取并存储,获取到的高度是px,所以用px2vp()转换为vp使用:

  onWindowStageCreate(windowStage: window.WindowStage) {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
    windowStage.loadContent('pages/Index', (err, data) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
      let windowClass = windowStage.getMainWindowSync()
      let statusHeight = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height;
      let bottomHeight = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect.height;
      AppStorage.setOrCreate('statusHeight',px2vp(statusHeight));//状态栏高度      
      AppStorage.setOrCreate('bottomHeight',px2vp(bottomHeight));// 底部导航条高度
    });
  } 

在需要的界面使用 AppStorage.get('statusHeight') ,AppStorage.get('bottomHeight') 获取。

更多关于HarmonyOS 鸿蒙Next沉浸式全屏时如何获取页面顶部和底部的安全距离的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next系统中,当应用进入沉浸式全屏模式时,为了获取页面顶部和底部的安全距离(也称为内边距或Insets),你可以使用系统提供的API来查询这些值。

具体步骤如下:

  1. 获取WindowInsets: 通过Window.getDecorView().getWindowInsets()方法获取当前的WindowInsets对象。

  2. 查询Insets值: 使用WindowInsets对象的getDisplayCutout()方法(如果存在)获取屏幕刘海或凹槽的信息,或者直接使用getInsets()方法获取顶部的状态栏和底部的导航栏的Insets。

  3. 解析InsetsInsets对象包含了lefttoprightbottom四个值,分别表示四个方向的安全距离。你需要关注topbottom两个值,它们分别表示顶部和底部的安全距离。

示例代码片段(伪代码):

WindowInsets insets = getWindow().getDecorView().getWindowInsets();
int topInset = insets.getInsets().top;
int bottomInset = insets.getInsets().bottom;

注意:上述代码仅为示意,鸿蒙系统不直接使用Java API,需使用鸿蒙系统的UI框架和API来获取Insets。

实际开发中,请查阅HarmonyOS的官方文档,使用对应的鸿蒙API进行实现。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部