HarmonyOS鸿蒙Next中曲面屏如何获取左右两边需要适配的安全边距

HarmonyOS鸿蒙Next中曲面屏如何获取左右两边需要适配的安全边距 曲面屏如何获取左右两边需要适配的安全边距? 有无获取曲面屏安全边距的api?

3 回复

getCutoutInfo(callback: AsyncCallback<CutoutInfo>): void; 获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用callback异步回调。建议应用布局规避该区域。

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5#getcutoutinfo9

示例:

import { BusinessError } from '@ohos.base';

let displayClass: display.Display | null = null;
try {
  displayClass = display.getDefaultDisplaySync();

  displayClass.getCutoutInfo((err: BusinessError, data: display.CutoutInfo) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to get cutoutInfo. Code: ' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in getting cutoutInfo. data: ' + JSON.stringify(data));
  });
} catch (exception) {
  console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
}

更多关于HarmonyOS鸿蒙Next中曲面屏如何获取左右两边需要适配的安全边距的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,获取曲面屏左右两边需要适配的安全边距可以通过Window类的getSafeArea方法来实现。getSafeArea方法返回一个SafeArea对象,该对象包含了屏幕的安全区域信息。安全区域是指屏幕中不会被曲面边缘或刘海等遮挡的区域。

具体步骤如下:

  1. 获取当前窗口的Window对象。
  2. 调用Window对象的getSafeArea方法,获取SafeArea对象。
  3. SafeArea对象中获取左右两边的安全边距。

示例代码如下:

import window from '@ohos.window';

let windowClass = window.getLastWindow(this.context);
windowClass.then((window) => {
    let safeArea = window.getSafeArea();
    let leftMargin = safeArea.left;
    let rightMargin = safeArea.right;
    console.log(\`Left safe margin: \${leftMargin}, Right safe margin: \${rightMargin}\`);
}).catch((err) => {
    console.error(\`Failed to get window safe area. Code: \${err.code}, message: \${err.message}\`);
});

SafeArea对象包含了lefttoprightbottom四个属性,分别表示屏幕左、上、右、下四个方向的安全边距。通过leftright属性,可以获取曲面屏左右两边需要适配的安全边距。

注意,getSafeArea方法返回的边距值是基于像素单位的,开发者需要根据实际需求进行适配处理。

在HarmonyOS鸿蒙Next中,针对曲面屏适配左右两边的安全边距,可以通过以下步骤实现:

  1. 获取屏幕信息: 使用DisplayManagerWindowManager获取屏幕的宽度和高度。

  2. 计算安全边距: 通过WindowInsets获取系统UI的边距,如状态栏、导航栏等,并结合曲面屏的曲率区域,计算出左右两侧的安全边距。

  3. 应用边距: 在布局时,将计算得到的安全边距应用到视图的左右两侧,确保内容不会被曲面区域遮挡。

建议使用WindowInsetsDisplayCutoutAPI来处理曲面屏的适配问题。

回到顶部