OpenHarmony开发者论坛
标题:
如何监听窗口大小的变化
[打印本页]
作者:
妮巴~😘
时间:
2023-11-6 09:51
标题:
如何监听窗口大小的变化
[md]【问题描述】
希望窗口大小发生变化,能够根据窗口大小做一些适配,如何监听窗口大小的变化?
【运行环境】
硬件:RK3568
ROM版本:OpenHarmony 3.2 Beta5
DevEvoStudio版本:
SDK版本:API 9
[/md]
作者:
westinyang
时间:
2023-11-6 10:55
[md]需先使用getLastWindow()、createWindow()、findWindow()中的任一方法获取到Window实例,再通过此实例调用`on('windowSizeChange')`开启窗口尺寸变化的监听。
获取getLastWindow()实例
```
let windowClass = null;
try {
window.getLastWindow(this.context, (err, data) => {
if (err.code) {
console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err));
return;
}
windowClass = data;
console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data));
});
} catch (exception) {
console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(exception));
}
```
调用`on('windowSizeChange')`开启窗口尺寸变化的监听
```
try {
windowClass.on('windowSizeChange', (data) => {
console.info('Succeeded in enabling the listener for window size changes. Data: ' + JSON.stringify(data));
});
} catch (exception) {
console.error('Failed to enable the listener for window size changes. Cause: ' + JSON.stringify(exception));
}
```
详细文档请参考:[@ohos.window (窗口) (openharmony.cn)](
https://docs.openharmony.cn/page ... onwindowsizechange7
)
[/md]
作者:
深开鸿_王石
时间:
2023-11-6 14:54
[md]你好,官方仓是有windowmanager的sample的,具体位置如下:
https://gitee.com/openharmony/ap ... agement/WindowRatio
,针对你提问的大小适配,子窗口等等都有相应的实现,比如:
* 设置窗口缩放比例的功能接口封装在Index,源码参考:[Index](
https://gitee.com/openharmony/ap ... ets/pages/index.ets
)
* 使用windows.setAspectRatio来设置窗口缩放比例;
* 设置以悬浮窗模式显示窗口和设置监听窗口大小接口的功能封装在MainAbility,源码参考:[MainAbility](
https://gitee.com/openharmony/ap ... lity/MainAbility.ts
)
* 使用windows.setWindowMode来设置窗口为悬浮窗模式;
* 使用windows.on('windowSizeChange', (data))来监听窗口大小信息;
如果你有什么要求也可以在仓里新增issue,我们可以根据需要进行对应场景演示
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5