HarmonyOS 鸿蒙Next 获取屏幕状态栏跟底部安全区域的高度
HarmonyOS 鸿蒙Next 获取屏幕状态栏跟底部安全区域的高度
有没有比较好的获取状态栏跟底部安全区域的高度的方式。
目前看到的文档如下:
场景是播放视频的时候横屏全屏播放的时候想留两个边。 写法如下: .width(this.orientation == window.Orientation.PORTRAIT ? ‘720lpx’: ‘100%’) .height(this.orientation == window.Orientation.PORTRAIT ? ‘410lpx’ : ‘100%’) 目前竖屏的时候用的是设背景颜色。 w.setWindowBackgroundColor(backgroundColor) 不过感觉可能会闪一下,因此如果开启的时候设置成全屏然后留一个内边距可能比较好。或者有比较好的方式也可以发一个文档看一下。 非常感谢。
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('bottomHeight',px2vp(bottomHeight));
AppStorage.setOrCreate('statusHeight',px2vp(statusHeight));
});
}
在需要的界面使用 AppStorage.get('bottomHeight'),AppStorage.get('statusHeight') 获取。
在HarmonyOS(鸿蒙)Next系统中,获取屏幕状态栏和底部安全区域的高度通常涉及系统提供的API来获取窗口的装饰区域(Insets)。以下是如何实现这一目标的简要说明:
-
状态栏高度:
- 可以通过
WindowInsets
对象获取状态栏的高度。通常,在组件或页面的onWindowFocusChanged
方法中调用getWindow().getDecorView().getWindowInsets().getSystemWindowInsets().top
来获取。
- 可以通过
-
底部安全区域高度:
- 类似地,底部安全区域(如导航栏)的高度可以通过
getWindowInsets().getSystemWindowInsets().bottom
来获取。
- 类似地,底部安全区域(如导航栏)的高度可以通过
示例代码(伪代码,具体实现需根据实际开发环境和API版本调整):
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
WindowInsets windowInsets = getWindow().getDecorView().getWindowInsets();
int statusBarHeight = windowInsets.getSystemWindowInsets().top;
int navigationBarHeight = windowInsets.getSystemWindowInsets().bottom;
// 使用statusBarHeight和navigationBarHeight
}
}
请确保您的开发环境和HarmonyOS SDK版本支持上述API。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html