HarmonyOS 获取应用顶部状态栏高度特定情况下会为0

1、onWindowStageCreate生命周期中getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height的值为0

2、getWindowAvoidArea(window.AvoidAreaType.TYPE_CUTOUT)与getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)的height为何不一致?

3、使用getWindowAvoidArea(window.AvoidAreaType.TYPE_CUTOUT)的height和top相加值作为状态栏高度还是偏小。内容区域还是有点会被顶部挖孔区域遮盖。

操作步骤:

1、进入应用并退出应用。

2、再从后台进入应用。

代码:

onWindowStageCreate(windowStage: window.WindowStage): void {
  windowStage.getMainWindow((err: BusinessError, data: window.Window) => {

  let windowClass: window.Window = data;

  let area: window.AvoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_CUTOUT);
  console.log('height:' + area.topRect.height)
});
}
HarmonyOS
2025-01-09 16:21:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

1、手机屏幕上面有电量的是状态栏,可以用windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height获取高度。多任务有隐藏状态栏的行为,应用在退出多任务的时候调getWindowAvoidArea的时候状态栏还没显示,获取到的避让区域就是0。

参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#getwindowavoidarea9

2、getWindowAvoidArea方法用于获取窗口内容规避的区域,当传入的AvoidAreaType参数为TYPE_CUTOUT时,表示获取刘海屏区域,而当传入的AvoidAreaType参数为TYPE_SYSTEM时,表示获取系统默认区域。根据系统默认区域的定义,通常包括状态栏和导航栏,这些区域的高度可能会因设备不同而有所差异。因此,getWindowAvoidArea(window.AvoidAreaType.TYPE_CUTOUT)和getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)的高度可能不一致,具体高度取决于当前窗口的布局和系统默认区域的定义。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5

3、根据文档内容,使用getWindowAvoidArea(window.AvoidAreaType.TYPE_CUTOUT)获取的height和top相加值作为状态栏高度时,确实可能会偏小,因为此时还需要考虑刘海屏区域的高度。具体来说,getWindowAvoidArea返回的AvoidArea对象包含width和height字段,这些字段表示刘海屏所在外包矩形的宽高。因此,在计算状态栏高度时,需要将这些值考虑在内,才能得到准确的高度。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-236-V5

分享
微博
QQ
微信
回复
2025-01-09 17:54:25
相关问题
沉侵式状态栏获取状态栏高度0
703浏览 • 1回复 待解决
HarmonyOS 获取状态栏高度
386浏览 • 1回复 待解决
HarmonyOS 如何获取状态栏高度
353浏览 • 1回复 待解决
获取状态栏与导航高度
1121浏览 • 1回复 待解决
HarmonyOS API获取状态栏高度
471浏览 • 1回复 待解决
HarmonyOS 如何获取状态栏高度
1182浏览 • 1回复 待解决
获取状态栏高度的方法
2218浏览 • 1回复 待解决
如何获取状态栏和导航高度
3436浏览 • 1回复 待解决
如何获取状态栏与导航高度
792浏览 • 0回复 待解决
HarmonyOS 如何获取系统状态栏高度
1227浏览 • 1回复 待解决
HarmonyOS 如何获取手机状态栏高度
499浏览 • 1回复 待解决
状态栏高度怎么获取
9856浏览 • 3回复 待解决
应用如何设置隐藏顶部状态栏
2778浏览 • 1回复 待解决
获取状态栏高度等方法
8305浏览 • 1回复 待解决
鸿蒙如何获取导航状态栏高度
11842浏览 • 1回复 待解决
求大佬告知如何获取状态栏高度
2615浏览 • 1回复 待解决
状态栏和底部触控高度获取
1334浏览 • 2回复 待解决
如何获取系统导航状态栏高度
1482浏览 • 1回复 待解决