在 OpenHarmony(ArkUI) 中,动画实现方式主要有 声明式动画(推荐) 和 命令式动画 两类。下面按常见使用场景给你梳理一下。
通过 .animation() 对组件属性变化做动画。
@Entry
@Component
struct AnimationDemo {
@State widthSize: number = 100
build() {
Column() {
Button('放大')
.width(this.widthSize)
.height(100)
.backgroundColor(Color.Blue)
.animation({
duration: 1000,
curve: Curve.EaseInOut,
iterations: 1,
playMode: PlayMode.Normal
})
.onClick(() => {
this.widthSize = 200
})
}
}
}
✅ 支持的属性:
用于多个状态变化统一动画
Button('动画')
.onClick(() => {
animateTo({
duration: 500,
curve: Curve.Ease
}, () => {
this.widthSize = 200
this.opacityVal = 0.5
})
})
List 的 itemAppear / itemDisappearSwiper 自带切换动画Tabs 切换动画if (this.show) {
Text('Hello')
.transition({ type: TransitionType.Insert, opacity: 0 })
}
router.pushUrl({
url: 'pages/Detail'
})
可配合 pageTransition() 使用。
import animator from '@ohos.animator'
let anim = animator.create({
duration: 1000,
easing: 'ease',
fill: 'forwards',
begin: 0,
end: 100
})
anim.onframe = (value) => {
this.x = value
}
anim.play()
适合:
| 类型 | 适用场景 |
|---|---|
| 属性动画 | UI 状态变化 |
| animateTo | 多属性同步 |
| transition | 组件出现/消失 |
| animator | 精细控制 |
✅ 新手:用 .animation()
✅ 多状态:用 animateTo
✅ 页面切换:用 pageTransition
✅ 游戏 / 复杂:用 animator
如果你有 具体场景(比如:按钮放大、列表滑动、登录页动画),我可以直接给你写完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。