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
赞
收藏 0
回答 1
待解决
相关问题
沉侵式状态栏获取状态栏高度为0
703浏览 • 1回复 待解决
HarmonyOS 如何获取顶部状态栏高度以及底部导航区域高度
1169浏览 • 1回复 待解决
HarmonyOS text设置为超长情况下尾部省略,特定情况下展示异常,尾部还有空间的情况下提前省略
595浏览 • 1回复 待解决
HarmonyOS 获取状态栏高度
386浏览 • 1回复 待解决
HarmonyOS 如何获取状态栏高度
353浏览 • 1回复 待解决
获取状态栏与导航栏高度
1121浏览 • 1回复 待解决
HarmonyOS API获取状态栏高度
471浏览 • 1回复 待解决
HarmonyOS 如何获取状态栏高度
1182浏览 • 1回复 待解决
HarmonyOS 深色模式下顶部状态栏遮盖时间
488浏览 • 1回复 待解决
获取状态栏高度的方法
2218浏览 • 1回复 待解决
如何获取状态栏和导航栏高度
3436浏览 • 1回复 待解决
如何获取状态栏与导航栏高度?
792浏览 • 0回复 待解决
HarmonyOS 如何获取系统状态栏高度?
1227浏览 • 1回复 待解决
HarmonyOS 如何获取手机状态栏高度?
499浏览 • 1回复 待解决
#鸿蒙学习大百科#如何获取设备顶部状态栏的高度?
632浏览 • 1回复 待解决
状态栏的高度怎么获取呢
9856浏览 • 3回复 待解决
应用如何设置隐藏顶部的状态栏
2778浏览 • 1回复 待解决
求获取状态栏高度等方法
8305浏览 • 1回复 待解决
鸿蒙如何获取导航栏和状态栏高度
11842浏览 • 1回复 待解决
HarmonyOS 如何获取navbar的高度和状态栏高度
720浏览 • 1回复 待解决
HarmonyOS 请问如何在不设置全屏的情况下覆盖状态栏背景呢?
514浏览 • 1回复 待解决
HarmonyOS setTimeout和setInterval计时器某种特定情况下不工作
910浏览 • 1回复 待解决
求大佬告知如何获取状态栏高度?
2615浏览 • 1回复 待解决
状态栏和底部触控栏的高度获取
1334浏览 • 2回复 待解决
如何获取系统导航栏和状态栏的高度
1482浏览 • 1回复 待解决
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