利用
属性动画
、显示动画
、组件转场动画
实现组件动画效果。
一、属性动画
属性动画是通过设置组件的 animation 属性来给组件添加动画,当组件的 width、height、Opacity、backgroundColor、scale、rotate、translate 等属性变更时,可以实现渐变过渡效果。
以 Image 组件为例,给它添加动画,其实就是给它添加 animation 的属性:
Image($r('app.media.app_icon'))
.position({
x: 10, // x轴坐标
y: 10 // y轴坐标
})
.rotate({
angle: 0, // 旋转角度
centerX: '50%', // 旋转中心横坐标
centerY: '50%' // 旋转中心纵坐标
})
.animation({
duration: 1000,
curve: Curve.EaseInOut
})
这时,ArkUI 就能帮我们监控组件的样式变化,我们只需要在与用户互动的事件当中去修改组件的样式,ArkUI 一旦发现组件的样式变化,就会自动填充起始样式和结束样式之间的每一帧画面,从而实现样式变化的渐变过渡效果。所以,一个动画就出来了。
注意:
animation 属性一定要放在需要有动画属性的样式之后。就像上面的实例代码,animation 要放在 position 和 rotate 之后。如果把 animation 放在前面,然后再写 position 和 rotate,那么这俩就不会有任何的变化。
animation 属性不是对所有样式都有效。
animation 可以传递的动画参数:
名称 | 参数类型 | 必填 | 描述 |
---|---|---|---|
duration | number | 否 | 设置动画时长。 默认值:1000,单位:毫秒 |
tempo | number | 否 | 动画播放速度。数值越大,速度越快。 默认值:1 |
curve | Curve | 否 | 设置动画曲线。 默认值:Curve.EaseInOut,平滑开始和结束。 |
delay | number | 否 | 设置动画延迟执行的时长。 默认值:0,单位:毫秒 |
iterations | number | 否 | 设置播放次数。 默认值:1,取值范围:[-1, +∞) 说明:设置为 -1 时表示无限次播放。 |
playMode | PlayMode | 否 | 设置动画播放模式,默认播放完成后重头开始播放。 默认值:PlayMode.Normal |
onFinish | ()=> void | 否 | 状态回调,动画播放完成时触发。 |
示例代码:
@Entry
@Component
struct Index {
@State textX: number = 10
@State textY: number =