HarmonyOS canvas是否有定时刷新的函数

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

Canvas控件自身没有刷新绘制区域的api接口。当前刷新内容的方案为:@State装饰的变量使用@Watch监听,变量变化时触发自定义方法重新绘制。

@Watch 参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-watch-V5

可以如下参考demo:

const VOLUME_DEFAULT: number = 5600;
const VOLUME_LIST_LENGTH: number = 10;
const VOLUME_MAX_HEIGHT: number = 16;
const VOLUME_MIN_HEIGHT: number = 10;
const VOLUME_WIDTH: number = 5;
const VOLUME_SPACE_WIDTH: number = 10;

@Preview
@Entry
@CustomDialog
export struct AudioRecorderDialog {
  controller: CustomDialogController
  @State @Watch('draw') volumeList:number[] = [1,1,1,1,1,1,1,1,1,1];
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  private timer: number = 0;

  aboutToAppear() {
    this.volumeList.fill(Math.floor(Math.random() * 100) + 1);
  }

  aboutToDisappear() {
    clearInterval(this.timer);
  }

  build() {
    Column() {
      Canvas(this.context)
        .width('100%')
        .height('50%')
        .backgroundColor('#ffff00')
        .onReady(() => {
          this.draw()
        })

      Text(this.volumeList.toString())
        .onClick(() => {
          this.timer = setInterval(() => {
            let tem = Math.floor(Math.random() * 100) + 1;
            this.volumeList.shift();
            this.volumeList.push(tem)
            console.error('licheeng', '点击执行 ' + this.volumeList);
          }, 1000)
        })
        .height(50)
    }
  }

  draw(){
    console.log('demoTest :' + 's')
    for (let index = 1; index < this.volumeList.length; index++) {
      let element = this.volumeList[index];
      this.context.fillRect(index * 5, (100 - element) / 2, 1, element);
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS Canvas怎么刷新
91浏览 • 1回复 待解决
如何实现卡片定时刷新和定点刷新
451浏览 • 1回复 待解决
怎么让Canvas刷新呀?
478浏览 • 1回复 待解决
如何控制canvas组件刷新
541浏览 • 1回复 待解决
Canvas如何触发刷新重复绘制?
993浏览 • 1回复 待解决
如何实现定时任务吗?
2589浏览 • 1回复 待解决
HarmonyOS Canvas颜色是否支持径向渐变
29浏览 • 1回复 待解决
HarmonyOS 是否有种主动刷新UI方法
37浏览 • 1回复 待解决
HarmonyOS是否支持malloc_trim()函数
368浏览 • 1回复 待解决
ArkTSclass析构函数吗?
326浏览 • 1回复 待解决