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
1422浏览 • 1回复 待解决
HarmonyOS 如何获取顶部状态栏高度以及底部导航区域高度
1806浏览 • 1回复 待解决
HarmonyOS text设置为超长情况下尾部省略,特定情况下展示异常,尾部还有空间的情况下提前省略
1253浏览 • 1回复 待解决
HarmonyOS 获取状态栏高度
1030浏览 • 1回复 待解决
HarmonyOS 如何获取状态栏高度
986浏览 • 1回复 待解决
获取状态栏与导航栏高度
2031浏览 • 1回复 待解决
HarmonyOS 深色模式下顶部状态栏遮盖时间
1042浏览 • 1回复 待解决
HarmonyOS API获取状态栏高度
987浏览 • 1回复 待解决
HarmonyOS 如何获取状态栏高度
2901浏览 • 2回复 待解决
获取状态栏高度的方法
2871浏览 • 1回复 待解决
HarmonyOS 如何获取系统状态栏高度?
1914浏览 • 1回复 待解决
HarmonyOS 如何获取手机状态栏高度?
1090浏览 • 1回复 待解决
如何获取状态栏与导航栏高度?
1594浏览 • 0回复 待解决
如何获取状态栏和导航栏高度
4283浏览 • 1回复 待解决
#鸿蒙学习大百科#如何获取设备顶部状态栏的高度?
1091浏览 • 1回复 待解决
状态栏的高度怎么获取呢
10361浏览 • 3回复 待解决
鸿蒙如何获取导航栏和状态栏高度
12656浏览 • 1回复 待解决
应用如何设置隐藏顶部的状态栏
3492浏览 • 1回复 待解决
求获取状态栏高度等方法
8919浏览 • 1回复 待解决
HarmonyOS 如何获取navbar的高度和状态栏高度
1306浏览 • 1回复 待解决
HarmonyOS 请问如何在不设置全屏的情况下覆盖状态栏背景呢?
979浏览 • 1回复 待解决
HarmonyOS setTimeout和setInterval计时器某种特定情况下不工作
1963浏览 • 1回复 待解决
求大佬告知如何获取状态栏高度?
3467浏览 • 1回复 待解决
HarmonyOS 获取手机状态栏高度,返回高度数值偏大
1404浏览 • 1回复 待解决
如何获取系统导航栏和状态栏的高度
2314浏览 • 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