HarmonyOS 鸿蒙Next 监听折叠状态,display.getDefaultDisplaySync()获取的屏幕宽高数据不对

发布于 1周前 作者 yibo5220 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用该display.on(‘foldStatusChange’)方法监听折叠状态,display.getDefaultDisplaySync()获取的屏幕宽高数据不对

display.on('foldStatusChange', (data: display.FoldStatus) => {
this.windowSize.width = px2vp(display.getDefaultDisplaySync().width);
this.windowSize.height = px2vp(display.getDefaultDisplaySync().height);
});


返回的宽高是上一个折叠状态的宽高,如何才能在折叠状态变化后正确获取屏幕宽高呢?


更多关于HarmonyOS 鸿蒙Next 监听折叠状态,display.getDefaultDisplaySync()获取的屏幕宽高数据不对的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
display.on(foldstatus)通知的是foldstatus的变化,这个时候去查foldstatus是实时更新的,折叠开合流程还没结束,读到的属性是旧值。请使用display.on('foldDisplayModeChange')试试。

更多关于HarmonyOS 鸿蒙Next 监听折叠状态,display.getDefaultDisplaySync()获取的屏幕宽高数据不对的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,使用display.on('foldStatusChange')方法监听折叠状态是正确的做法,该方法能够实时捕获设备从展开到折叠或从折叠到展开的状态变化。对于你提到的display.getDefaultDisplaySync()获取的屏幕宽高数据不对的问题,这通常与屏幕适配及折叠状态变化后的数据更新不及时有关。

确保在折叠状态变化事件回调中重新获取屏幕宽高数据,因为设备折叠状态改变后,屏幕的物理尺寸和逻辑尺寸都可能发生变化。示例代码如下:

display.on('foldStatusChange', (status) => {
    const displayInfo = display.getDefaultDisplaySync();
    console.log('Screen Width:', displayInfo.widthPixels);
    console.log('Screen Height:', displayInfo.heightPixels);
});

如果上述代码在折叠状态变化后仍然无法获取正确的屏幕宽高数据,可能是因为系统未能及时更新显示信息,或者存在其他未预见的系统行为。此时,你可以尝试在回调中增加延时调用,或者检查是否有其他系统API或事件可以进一步确认屏幕状态的更新。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部