独立的指定帧率来运行UI绘制

独立的指定帧率来运行UI绘制

HarmonyOS
2024-05-21 20:52:17
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
pumayze

需要以独立的帧率绘制更新操作UI界面时,可以通过DisplaySync来实现绘制内容的帧率的控制。

使用的核心API

@ohos.graphics.displaySync

核心代码介绍

1.通过DisplaySync实例设置帧率和注册订阅函数。

CreateDisplaySyncSlow() { 
    let range : ExpectedFrameRateRange = { // 创建和配置帧率参数 
      expected: 30, // 设置期望绘制帧率为30hz 
      min: 0, // 配置帧率范围 
      max: 120 // 配置帧率范围 
    }; 
  
    let draw30 = (intervalInfo: displaySync.IntervalInfo) => { // 订阅回调函数,字体大小在25到150之间变化 
      if (this.isBigger_30) { 
        this.drawFirstSize += 1; 
        if (this.drawFirstSize > 150) { 
          this.isBigger_30 = false; 
        } 
      } else { 
        this.drawFirstSize -= 1; 
        if (this.drawFirstSize < 25) { 
          this.isBigger_30 = true; 
        } 
      } 
    }; 
  
    this.backDisplaySyncSlow = displaySync.create(); // 创建DisplaySync实例 
    this.backDisplaySyncSlow.setExpectedFrameRateRange(range); // 设置帧率 
    this.backDisplaySyncSlow.on("frame", draw30); // 订阅frame事件和注册订阅函数 
}
2.开始每帧回调
Button('Start') 
  .id('CustomDrawStart') 
  .fontSize(14) 
  .fontWeight(500) 
  .margin({ bottom: 10, left: 5 }) 
  .fontColor(Color.White) 
  .onClick((): void => { 
      if (this.backDisplaySyncSlow == undefined) { 
        this.CreateDisplaySyncSlow(); 
      } 
      if (this.backDisplaySyncFast == undefined) { 
        this.CreateDisplaySyncFast(); 
      } 
      if (this.backDisplaySyncSlow) { 
        this.backDisplaySyncSlow.start(); 
      } 
      if (this.backDisplaySyncFast) { 
        this.backDisplaySyncFast.start(); 
      } 
    }) 
    .width('20%') 
    .height(40) 
    .shadow(ShadowStyle.OUTER_DEFAULT_LG)

实现效果

适配版本信息

DevEco Studio Version: 4.1.3.500

SDK:HarmoneyOS 4.1.5.6

分享
微博
QQ
微信
回复
2024-05-22 17:01:25
相关问题
显式动画请求绘制帧率
334浏览 • 1回复 待解决
ArkTs 有运行时创建指定方法吗?
268浏览 • 1回复 待解决
xComponent组件帧率怎么统计?
667浏览 • 1回复 待解决
HarmonyOS 音频播放帧率控制
236浏览 • 1回复 待解决
HarmonyOS 获取页面帧率
148浏览 • 1回复 待解决
可以用JS UI组件做进度展示吗?
5767浏览 • 1回复 待解决
JS UI框架中canvas如何动态指定宽高
6909浏览 • 1回复 待解决
属性动画请求可变帧率
396浏览 • 1回复 待解决
什么是可变帧率LTPO?
419浏览 • 1回复 待解决
是否支持web内核独立升级
835浏览 • 1回复 待解决