在 OpenHarmony(ArkUI / eTS) 中,实现图表动画主要有 三种常见方式,取决于你使用的是 系统组件、第三方图表库,还是自定义 Canvas 绘制。
下面按实用程度给你讲清楚。
@ohos/mpchart 或类似 ECharts 封装)特点
示例(伪代码,基于常见图表库)
LineChart()
.data(lineData)
.animation(true) // 开启动画
.animationDuration(800)
不同库 API 不同,但基本都有
animation / animate / duration
@State height: number = 0
aboutToAppear() {
animateTo({ duration: 1000 }, () => {
this.height = 200
})
}
build() {
Column() {
Rect()
.width(40)
.height(this.height)
.backgroundColor(Color.Blue)
}
}
✅ 优点:简单
❌ 缺点:不适合复杂图表
Canvas 绘制requestAnimationFrame 持续重绘drawFrame(progress: number) {
ctx.clearRect(0, 0, width, height)
ctx.beginPath()
for (let i = 0; i <= progress * points.length; i++) {
ctx.lineTo(points[i].x, points[i].y)
}
ctx.stroke()
}
startAnimation() {
let p = 0
const step = () => {
p += 0.02
this.drawFrame(p)
if (p < 1) requestAnimationFrame(step)
}
requestAnimationFrame(step)
}
| 动画类型 | 实现方式 |
|---|---|
| 入场动画 | 属性动画 / 图表库 |
| 数据更新 | 差值动画 |
| 实时动画 | Canvas + RAF |
| 交互动画 | 手势 + 状态 |
✅ 业务项目:第三方图表库
✅ 轻量 UI:ArkUI 属性动画
✅ 复杂可视化:Canvas 自绘
如果你愿意,可以告诉我:
我可以直接给你 可运行示例代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。