思路:将应用界面分成若干段(利用if或利用滚动容器的数据源),利用displaysync监听vsync,在vsync的回调中逐步填充应用内容非滚动场景:import displaySync from '@ohos.graphics.displaySync'; @Entry @Component struct Index { @State stages:number = 0; myDisplaySync:displaySync.DisplaySync = displaySync.create(); updateStage() { if (this.stages == 0) { this.myDisplaySync.start(); this.myDisplaySync.on("frame", (frameInfo: displaySync.IntervalInfo)=> { this.updateStage(); }); } this.stages += + 1; if (this.stages == 3) { this.myDisplaySync.stop() } } build() { Column() { if (this.stages > 0) { Text("first part") } if (this.stages > 1) { Text("second part") } if (this.stages > 2) { Text("third part") } } .width('100%') } aboutToAppear(): void { this.updateStage() } }滚动场景和上面类似的思路,滚动容器要更简单一些,因为数据天然就是分段的,可以直接控制容器里的数据数量:如果是lazyforeach,可以修改他的数据源中的getTotalCount回调函数,初始返回少量数据,逐步放开如果是foreach,只能修改数据源数组中的数据数量和上面的用法一样,都是用displaysync逐帧放开数据
思路:将应用界面分成若干段(利用if或利用滚动容器的数据源),利用displaysync监听vsync,在vsync的回调中逐步填充应用内容
非滚动场景:
滚动场景
和上面类似的思路,滚动容器要更简单一些,因为数据天然就是分段的,可以直接控制容器里的数据数量:
如果是lazyforeach,可以修改他的数据源中的getTotalCount回调函数,初始返回少量数据,逐步放开
如果是foreach,只能修改数据源数组中的数据数量
和上面的用法一样,都是用displaysync逐帧放开数据