ts-explicit-animation.md 3.4 KB
Newer Older
Z
zengyawen 已提交
1
# Explicit Animation
Z
zengyawen 已提交
2

Z
zengyawen 已提交
3

Mr-YX's avatar
Mr-YX 已提交
4
> **NOTE**<br>
Z
zengyawen 已提交
5
> This animation is supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version.
Z
zengyawen 已提交
6

E
ester.zhou 已提交
7
| Name | Description |
Z
zengyawen 已提交
8
| -------- | -------- |
E
ester.zhou 已提交
9
| animateTo(value: [AnimationOptions](#animationoptions), event: ()=&gt; void) : void | Provides a transition animation when the status changes due to the closure code.<br/>**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. |
Z
zengyawen 已提交
10 11


E
ester.zhou 已提交
12
## AnimationOptions
Z
zengyawen 已提交
13

Z
zengyawen 已提交
14
- Attributes
Mr-YX's avatar
Mr-YX 已提交
15
  | Name | Type | Default Value | Description |
Z
zengyawen 已提交
16
  | -------- | -------- | -------- | -------- |
E
ester.zhou 已提交
17 18 19 20 21 22
  | 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. |
Z
zengyawen 已提交
23 24


Z
zengyawen 已提交
25
- APIs
Mr-YX's avatar
Mr-YX 已提交
26 27
  | Name                  | Description                                               |
  | --------------------- | --------------------------------------------------------- |
E
ester.zhou 已提交
28
  | onFinish() =&gt; void | Callback invoked when the animation playback is complete. |
Z
zengyawen 已提交
29 30


Z
zengyawen 已提交
31 32
## Example

Z
zengyawen 已提交
33

Mr-YX's avatar
Mr-YX 已提交
34
```ts
Z
zengyawen 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
@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) => {
          // Animation configuration for the width and height attributes of the Button component
          if (this.flag) {
            animateTo({
            duration: 1000, // Animation duration
            tempo: 0.5, // Playback speed
            curve: Curve.EaseInOut, // Animation curve
            delay: 200, // Animation delay
          iterations: 1, // Number of playback times
            playMode: PlayMode.Normal, // Animation mode
              onFinish: () => {
                console.info('play end')
              }
            }, () => {
              this.widthSize = 100
              this.heightSize = 50
            })
          } else {
            animateTo({
            duration: 200, // Animation duration
            curve: Curve.Ease, // Animation curve
            delay: 200, // Animation delay
          iterations: 1, // Number of playback times
            playMode: PlayMode.Normal, // Animation mode
              onFinish: () => {
                console.info('play end')
              }
            }, () => {
              this.widthSize = 200
              this.heightSize = 100
            })
          }
          this.flag = !this.flag
        })
    }.width('100%').margin({ top: 5 })
  }
}
```

Mr-YX's avatar
Mr-YX 已提交
87
![en-us_image_0000001256978345](figures/en-us_image_0000001256978345.gif)