HarmonyOS 鸿蒙Next沉浸式全屏时如何获取页面顶部和底部的安全距离
HarmonyOS 鸿蒙Next沉浸式全屏时如何获取页面顶部和底部的安全距离
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来查询这些值。
具体步骤如下:
-
获取WindowInsets: 通过
Window.getDecorView().getWindowInsets()
方法获取当前的WindowInsets
对象。 -
查询Insets值: 使用
WindowInsets
对象的getDisplayCutout()
方法(如果存在)获取屏幕刘海或凹槽的信息,或者直接使用getInsets()
方法获取顶部的状态栏和底部的导航栏的Insets。 -
解析Insets:
Insets
对象包含了left
、top
、right
和bottom
四个值,分别表示四个方向的安全距离。你需要关注top
和bottom
两个值,它们分别表示顶部和底部的安全距离。
示例代码片段(伪代码):
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