HarmonyOS 应用分帧的通用方法?

如题:HarmonyOS 应用分帧的通用方法?

阅读 504
1 个回答

思路:将应用界面分成若干段(利用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逐帧放开数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进