[文章]HarmonyOS/OpenHarmony应用开发-显示动画

阅读量0
0
0

提供全局animateTo显式动画接口来指定由于闭包代码导致的状态变化插入过渡动效。
说明:从API Version 7开始支持。开发语言ets.

接口:animateTo(value: AnimateParam, event: ()=> void) : void
描述:提供全局animateTo显式动画接口来指定由于闭包代码导致的状态变化插入过渡动效。
event指定显示动效的闭包函数,在闭包函数中导致的状态变化系统会自动插入过渡动画。
HarmonyOS/OpenHarmony应用开发-显示动画-开源基础软件社区
示例代码:

@Entry
@Component
struct ShowAnimation {
  @State widthSize: number = 250
  @State heightSize: number = 100
  @State rotateAngle: number = 0
  private flag: boolean = true

  build() {
    Column() {
      Button('change width and height')
        .width(this.widthSize)
        .height(this.heightSize)
        .margin(30)
        .onClick(() => {
          if (this.flag) {
            animateTo({
              duration: 2000, // 动画时长
              curve: Curve.EaseOut, // 动画曲线
              iterations: 2, // 播放次数
              playMode: PlayMode.Normal,// 动画模式
              onFinish: () => {
                console.info('play end')
              }
            }, () => {
              this.widthSize = 100;
              this.heightSize = 50;
            })
          } else {
            animateTo({}, () => {
              this.widthSize = 250
              this.heightSize = 100
            })
          }
          this.flag = !this.flag
        })

      Row(){
        Text('change rotate angle').fontSize(20)
      }
      .width(250)
      .height(50)
      .backgroundColor(0xf45645)
      .justifyContent(FlexAlign.Center)
      .rotate({ angle: this.rotateAngle})
      .onClick(() => {
        if(this.flag){
          animateTo({
            duration: 1200,
            curve: Curve.Friction,
            delay: 500,
            iterations: 1, // 设置-1表示动画无限循环
            playMode: PlayMode.AlternateReverse,
            onFinish: () => {
              console.info('play end1')
            }
          }, () => {
            this.rotateAngle = 90;
          })
        }
      })
    }.width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }
}

示例效果:
HarmonyOS/OpenHarmony应用开发-显示动画-开源基础软件社区
这里还要说的是的,这里的rotate好像不生效,不知道是不是版本原因,后续会查找原因.
HarmonyOS/OpenHarmony应用开发-显示动画-开源基础软件社区

代码地址:https://gitee.com/jltfcloudcn/jump_to/tree/master/AnimationMuster

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友