HarmonyOS 鸿蒙Next 实时获取屏幕宽度异常

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 实时获取屏幕宽度异常

在适配折叠屏时遇到实时获取屏幕宽度不正确,示例代码如下:
display.on(“foldStatusChange”,(status:display.FoldStatus)=>{
this.windowWidth = px2vp(display.getDefaultDisplaySync().width);
console.log("屏幕 宽度 === "+ this.windowWidth + " 折叠屏幕状态 " +status)

})

在关闭折叠屏的时候,会偶现获取的宽度仍然是展开的宽度,日志如下:
屏幕 宽度 === 711.68 折叠屏幕状态 2
屏幕 宽度 === 711.68 折叠屏幕状态 3
屏幕 宽度 === 711.68 折叠屏幕状态 1

2 回复
foldStatusChange回调触发后,需要等切屏完成了才会更新display的信息。所以接收到foldStatusChange回调,但切屏动作还没有执行完,所以拿到的display 宽度值没更新。

建议修改:如需获取宽度可以直接监听foldDisplayModeChange,foldDisplayModeChange变化的时候屏幕信息一定更新了。

状态监听使用foldStatusChange 监听

针对HarmonyOS 鸿蒙Next实时获取屏幕宽度异常的问题,可能的原因及解决方案如下:

  1. 系统兼容性问题:请确保您的设备已升级至最新版本的HarmonyOS,并检查该版本是否支持当前应用的屏幕宽度获取功能。
  2. 权限设置问题:检查应用是否已获取到必要的权限,如屏幕读取权限等,以确保能够正确获取屏幕宽度。
  3. 代码实现问题:检查代码实现,确保在获取屏幕宽度时使用了正确的方法和API。例如,在ArkUI中,可以使用display.getDefaultDisplaySync()方法来获取屏幕宽高尺寸。
  4. 预览器或工具问题:尝试使用其他预览器或工具,以排除预览器自身存在的bug或兼容性问题。

如果以上方法均无法解决问题,可能是由于系统或应用的深层次问题导致。此时,建议详细记录问题现象和操作步骤,并联系HarmonyOS的官方客服,提供完整的问题描述和相关信息,以便官方进行进一步的排查和解决。

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

回到顶部