Explicit Animation
NOTE
This animation is supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version.
Name |
Description |
animateTo(value: AnimationOptions, event: ()=> void) : void |
Provides a transition animation when the status changes due to the closure code. event specifies the closure function that displays the dynamic effect. The system automatically inserts the transition animation if the status changes in the closure function. |
AnimationOptions
Name |
Type |
Default Value |
Description |
duration |
number |
1000 |
Animation duration, in ms. |
tempo |
number |
1.0 |
Animation playback speed. A larger value indicates faster animation playback, and a smaller value indicates slower animation playback. The value 0 means that there is no animation. |
curve |
Curve | Curves |
Linear |
Animation curve. |
delay |
number |
0 |
Delay of animation playback, in ms. By default, the playback is not delayed. |
iterations |
number |
1 |
Number of times that the animation is played. By default, the animation is played once. The value -1 indicates that the animation is played for an unlimited number of times. |
playMode |
PlayMode |
Normal |
Animation playback mode. By default, the animation is played from the beginning after the playback is complete. |
Name |
Description |
onFinish() => void |
Callback invoked when the animation playback is complete. |
Example
@Entry
@Component
struct AnimateToExample {
@State widthSize: number = 200
@State heightSize: number = 100
private flag: boolean = true
build() {
Column() {
Button('click me')
.width(this.widthSize)
.height(this.heightSize)
.backgroundColor(0x317aff)
.onClick((event: ClickEvent) => {
if (this.flag) {
animateTo({
duration: 1000,
tempo: 0.5,
curve: Curve.EaseInOut,
delay: 200,
iterations: 1,
playMode: PlayMode.Normal,
onFinish: () => {
console.info('play end')
}
}, () => {
this.widthSize = 100
this.heightSize = 50
})
} else {
animateTo({
duration: 200,
curve: Curve.Ease,
delay: 200,
iterations: 1,
playMode: PlayMode.Normal,
onFinish: () => {
console.info('play end')
}
}, () => {
this.widthSize = 200
this.heightSize = 100
})
}
this.flag = !this.flag
})
}.width('100%').margin({ top: 5 })
}
}
![en-us_image_0000001256978345](figures/en-us_image_0000001256978345.gif)