HarmonyOS 鸿蒙Next 自定义view的刷新 onReady的刷新

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 自定义view的刷新 onReady的刷新

自定义view想实现内容刷新,除了使用参数控制绘制以外,有没有系统提供的方法可以实现刷新呢?




build() {
RelativeContainer() {
if (this.controller.isUpdateUI) {
this.drawCanvas()
} else {
this.drawCanvas()
}
if (this.touchX > 0) {
this.drawTouchUI()
}
}
}

/**
* 绘制自定义组件
*/
@Builder
drawCanvas() {
Canvas(this.mContext)
.onReady(() => {
//计算Y轴文本的宽度
this.computeValueWidthTextHeight()
this.mContext.save()
//竟变化坐标。y轴向上为正
this.mContext.scale(1, -1)
//平移坐标系到左下角
this.mContext.translate(0, -this.heightView)
this.drawXValueText() //绘制X轴刻度值
this.drawYValueLineView() //绘制Y轴刻度线
this.drawLineTargetBg() //绘制达标范围、刻度值、刻度线
this.drawLineData() //绘制折线
this.drawYValueTextBgView() //绘制Y轴刻度值
})
.onTouch((event: TouchEvent) => {
this.onTouchChange(event)
})
}

2 回复
声明式只能通过变量更新来刷新UI

在HarmonyOS(鸿蒙)开发中,自定义View的刷新机制通常不直接依赖于onReady方法的调用。onReady更多地是在组件或页面完成初始布局后被调用,用于进行一些初始化操作。对于自定义View的刷新,你可以考虑以下几种方式:

  1. 使用invalidate()方法:强制View重绘,这会导致onDraw(Canvas canvas)方法的调用,你可以在这里进行绘图的更新。

  2. 修改View的属性:如果自定义View的刷新依赖于某些属性的变化,可以通过修改这些属性的值来触发重绘或重新布局。

  3. 使用requestLayout():如果需要重新布局,可以调用此方法,系统会安排一个布局传递过程,最终可能导致onLayoutonMeasure的调用。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部