如何监听窗口大小的变化

妮巴~😘 显示全部楼层 发表于 2023-11-6 09:51:28

【问题描述】

希望窗口大小发生变化,能够根据窗口大小做一些适配,如何监听窗口大小的变化?

【运行环境】

硬件:RK3568

ROM版本:OpenHarmony 3.2 Beta5

DevEvoStudio版本:

SDK版本:API 9

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论3

westinyang

沙发 发表于 2023-11-6 10:55:07

需先使用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)

深开鸿_王石

板凳 发表于 2023-11-6 14:54:49

你好,官方仓是有windowmanager的sample的,具体位置如下:https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/WindowManagement/WindowRatio,针对你提问的大小适配,子窗口等等都有相应的实现,比如

  • 设置窗口缩放比例的功能接口封装在Index,源码参考:Index

  • 使用windows.setAspectRatio来设置窗口缩放比例;

  • 设置以悬浮窗模式显示窗口和设置监听窗口大小接口的功能封装在MainAbility,源码参考:MainAbility

    • 使用windows.setWindowMode来设置窗口为悬浮窗模式;
    • 使用windows.on('windowSizeChange', (data))来监听窗口大小信息;

如果你有什么要求也可以在仓里新增issue,我们可以根据需要进行对应场景演示

点评

这个windowmanager能做成像悬浮窗一样的嘛  发表于 2023-11-6 19:25

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部