HarmonyOS 鸿蒙Next:如何获取当前应用的高度啊

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:如何获取当前应用的高度啊

有的组件位置需要进行变化,我得实时获取当前应用的高度,比如启动分屏的时候,高度只有正常的一半

cke_2373.png

上面的是自己的应用



关于HarmonyOS 鸿蒙Next:如何获取当前应用的高度啊的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

1 回复

你好呀,鸿蒙开发者同僚

关于你的问题《分屏后,如何获取当前应用的高度》在鸿蒙OS中,应用在分屏后窗口的高度会发生变化,可以通过以下步骤获取当前应用的高度,希望对你有所帮助:

1.监听窗口尺寸变化: 使用on('windowSizeChange')方法来监听窗口尺寸的变化。这个方法会在窗口尺寸发生变化时触发回调函数。

2.获取窗口尺寸: 在onWindowStageCreate方法中,获取Window对象,并通过getWindowProperties方法返回的windowRect来获取窗口的尺寸 。将窗口尺寸写入应用的存储中,用于UI侧窗口尺寸的首次初始化赋值 。

3.更新UI侧窗口尺寸: 使用AppStorage存储窗口尺寸信息,并在窗口尺寸变化时注册监听。当窗口尺寸变化时,UI侧通过[@StorageLink](/user/StorageLink)绑定窗口尺寸,并同步更新窗口尺寸 。

4.获取应用高度: 通过[@StorageLink](/user/StorageLink)装饰的窗口尺寸数据,应用可以动态调整自身的布局 。在UI侧,可以根据最新的窗口尺寸重新计算应用的高度。

通过以上步骤,应用可以在分屏后动态获取当前窗口的高度,并根据窗口尺寸调整自身的布局。

// EntryAbility.ets
import { UIAbility } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';

export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage): void { console.info(‘Ability onWindowStageCreate.’); windowStage.getMainWindow().then((windowClass) => { // 获取窗口尺寸,存入AppStorage AppStorage.setOrCreate(‘winWidth’, windowClass.getWindowProperties().windowRect.width); AppStorage.setOrCreate(‘winHeight’, windowClass.getWindowProperties().windowRect.height); // 监听窗口尺寸变化 windowClass.on(‘windowSizeChange’, (windowSize) => { AppStorage.setOrCreate(‘winWidth’, windowSize.width); AppStorage.setOrCreate(‘winHeight’, windowSize.height); }); }); windowStage.loadContent(‘pages/Index’, (err) => { if (err.code) { console.error('Failed to load the content. Cause: ’ + JSON.stringify(err)); return; } console.info(‘Succeeded in loading the content.’); }); } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

// Index.ets
@Entry
@Component
struct Index {
// 初始化参数,这里会初始化为AppStorage中存储的值
@StorageLink(‘winWidth’) winWidth: number = 1260;
@StorageLink(‘winHeight’) winHeight: number = 2224;

aboutToAppear() { console.info('Current window size. width: ’ + this.winWidth + ', height: ’ + this.winHeight); }

build() { Row() { // 根据winWidth、winHeight动态调整应用布局 // … } .size({ width: px2vp(this.winWidth), height: px2vp(this.winHeight) }) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

回到顶部