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