如题:HarmonyOS windowObj.on("windowSizeChange", onChange),转屏时候触发,获取的设备方向是转屏之前的,宽高是转屏之后的?
如题:HarmonyOS windowObj.on("windowSizeChange", onChange),转屏时候触发,获取的设备方向是转屏之前的,宽高是转屏之后的?
1 回答868 阅读✓ 已解决
1 回答1.2k 阅读
1 回答994 阅读
1 回答947 阅读
1 回答906 阅读
1 回答827 阅读
1 回答780 阅读
OpenHarmony window 和 display之间时序问题
window和display是两个服务,处于不同的进程中,但旋转的时候两个模块都会涉及,有时三方应用用法不对会出现时序问题,旋转完后display的更新时间早于window的更新时间(display旋转时直接宽高互换,提前可预知,window涉及ArkUI布局完才知道窗口大小,耗时长)
常见问题为:
1、有时候旋转监听window.on(‘windowSizeChange’)会没收到回调
因为在window侧如果窗口大小没发生变化,此监听不会被触发,如果直接旋转180度的情况下,窗口大小并没有改变,此时不会通知回调,可改用监听display.on('change')来获取窗口的大小方向。
2、监听display.on('change')来获取windowClass.getWindowProperties().windowRect.width(height)错误
display触发变化时window侧还没更新完成,此时获取到的width(height)还是原来的宽高,可通过从display获取width(height)信息
3、window侧监听不到orientation(方向)信息,如果想获取orientation信息,需要从display.on('change')来获取
4、通过一个监听既想获取orientation信息,又想获取avoidAreaChange信息
错误用法:监听display.on('change')来获取window的属性
正确用法:监听window.on('avoidAreaChange')来获取display的orientation属性