HarmonyOS 顶部安全区域和底部安全区域的高度是多少,对应的单位是什么?

HarmonyOS  顶部安全区域和底部安全区域的高度是多少,对应的单位是什么?

HarmonyOS
2024-09-26 12:50:32
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

getWindowAvoidArea能获取窗口内容规避的区域;如系统栏区域、刘海屏区域、手势区域、软键盘区域等与窗口内容重叠时,需要窗口内容避让的区域。可参考 https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#getwindowavoidarea9

可以参考如下demo。

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;  
  }  
  let windowClass: window.Window = windowStage.getMainWindowSync(); // 获取应用主窗口  
  let topAvoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)  
  let bottomAvoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR)  
  let bottomRectHeight = px2vp(bottomAvoidArea.bottomRect.height)  
  let topRectHeight = px2vp(topAvoidArea.topRect.height)  
  AppStorage.setOrCreate('bottomRectHeight',bottomRectHeight)  
  AppStorage.setOrCreate('topRectHeight',topRectHeight)  
  let isLayoutFullScreen = true;  
  windowClass.setWindowLayoutFullScreen(isLayoutFullScreen)  
    .then(() => {  
      console.info('Succeeded in setting the window layout to full-screen mode.');  
    })  
    .catch((err: BusinessError) => {  
      console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err));  
    });  
  hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');  
});

需要在WindowStageCreate生命周期中的loadContent之后获取;获取到的是高度单位是vp。

分享
微博
QQ
微信
回复
2024-09-26 17:38:21
相关问题
关于屏幕安全区域问题咨询
303浏览 • 1回复 待解决
Flutter 项目在设备安全区如何适配?
168浏览 • 1回复 待解决