HarmonyOS 鸿蒙Next折叠屏展开场景下画面在半屏停留大概1S然后展开到全屏显示

HarmonyOS 鸿蒙Next折叠屏展开场景下画面在半屏停留大概1S然后展开到全屏显示 该问题出现的界面,组件树大概为:左外侧的tabs共有4个标签页,问题出现的tabContent首页包含swiper,swiper再包含多个tabContent,在首页左右滑动可以切换不同界面;

当最内层的tabContent数量超过X时,折叠屏展开,画面会从半屏展开到全屏(有1S停留),预期现象是:折叠屏展开画面直接实现全屏;

2 回复

该问题具体定位过程:当折叠屏状态变化时,会导致界面内一个自定义组件 Canvas 重新绘制,发现重新绘制触发时机慢;

canvas的onReady事件描述如下:

onReady(event: () => void)
Canvas组件初始化完成时或者Canvas组件发生大小变化时的事件回调,当该事件被触发时画布被清空,该事件之后Canvas组件宽高确定且可获取,可使用Canvas相关API进行绘制。当Canvas组件仅发生位置变化时,只触发onAreaChange事件、不触发onReady事件。
onAreaChange事件在onReady事件后触发。

通过走读代码,发现 代码中使用同步方法获取界面内的一个字符串,该操作耗时长,然后才到canvas的onReady方法进行绘制;导致了界面从半屏到全屏的问题;

总结:在界面数据获取时,不能使用同步方案等待,应做数据预处理,不能阻塞界面变化;

更多关于HarmonyOS 鸿蒙Next折叠屏展开场景下画面在半屏停留大概1S然后展开到全屏显示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,折叠屏设备在展开时,画面在半屏停留约1秒后展开到全屏显示,这是系统对屏幕状态变化的处理机制。鸿蒙OS通过实时感知屏幕状态变化,调整应用布局和显示内容,确保从折叠到展开的过渡平滑。系统会根据屏幕尺寸动态调整应用界面,优化用户体验。开发者需适配不同屏幕状态,确保应用在不同模式下正常显示和交互。

回到顶部