鸿蒙 - arkTs:属性动画,显式动画,组件转场动画

打印 上一主题 下一主题

主题 1813|帖子 1813|积分 5439

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
属性动画:

属性动画是通过设置组件的animation属性来给组件添加动画;
代码示例:

  1. @Entry
  2. @Component
  3. struct Index {
  4.   @State widthSize: number = 250
  5.   @State heightSize: number = 100
  6.   @State flag: boolean = true
  7.   build() {
  8.     Column() {
  9.       Button('开始动画')
  10.         .onClick(() => {
  11.           if (this.flag) {
  12.             this.widthSize = 150
  13.             this.heightSize = 60
  14.           } else {
  15.             this.widthSize = 250
  16.             this.heightSize = 100
  17.           }
  18.           this.flag = !this.flag
  19.         })
  20.         .margin(30)
  21.         .width(this.widthSize)
  22.         .height(this.heightSize)
  23.         .animation({
  24.           duration: 2000,
  25.           curve: Curve.EaseOut,
  26.           iterations: 3,
  27.           playMode: PlayMode.Normal
  28.         })
  29.     }
  30.       .width('100%')
  31.       .margin({ top: 20 })
  32.   }
  33. }
复制代码

显式动画:

提供全局animateTo显式动画接口来指定由于闭包代码导致的状态变化插入过渡动效。
代码示例:

  1. @Entry
  2. @Component
  3. struct Index {
  4.   @State widthSize: number = 250
  5.   @State heightSize: number = 100
  6.   private flag: boolean = true
  7.   build() {
  8.     Column() {
  9.       Button('change size')
  10.         .width(this.widthSize)
  11.         .height(this.heightSize)
  12.         .margin(30)
  13.         .onClick(() => {
  14.           if (this.flag) {
  15.             animateTo({}, () => {
  16.               this.widthSize = 150
  17.               this.heightSize = 60
  18.             })
  19.           } else {
  20.             animateTo({}, () => {
  21.               this.widthSize = 250
  22.               this.heightSize = 100
  23.             })
  24.           }
  25.           this.flag = !this.flag
  26.         })
  27.     }
  28.       .width('100%')
  29.       .margin({ top: 5 })
  30.   }
  31. }
复制代码

属性动画 & 显式动画 - animation枚举阐明:

名称参数类型必填描述durationnumber否 设置动画时长,单元为毫秒;默认值:1000。
temponumber 动画播放速度。数值越大,动画播放速度越快。值为0时,表示不存在动画。默认值:1。
curvestring | Curve 设置动画曲线。默认曲线为线性。默认值:Curve.Linear。
delaynumber 设置动画耽误执行的时长,单元为毫秒。默认值:0。
iterationsnumber 设置播放次数。默认值:1。
playModePlayMode 设置动画播放模式,默认播放完成后重头开始播放。默认值:PlayMode.Normal。
onFinish() => void状态回调,动画播放完成时触发的方法。 animation - Curve枚举阐明:



  • Linear:表示动画重新到尾的速度都是类似的。
  • Ease:表示动画以低速开始,然后加速,在结束前变慢。
  • EaseIn:表示动画以低速开始。
  • EaseOut:表示动画以低速结束。
  • EaseInOut:表示动画以低速开始和结束。
animation - PlayMode枚举阐明:



  • Normal:动画按正常播放。
  • Reverse:动画反向播放。
  • Alternate:动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。
  • AlternateReverse:动画在奇数次(1、3、5...)反向播放,在偶数次(2、4、6...)正向播放。

组件转场动画: 

组件内转场重要通过transition属性设置转场参数,在组件插入和删除时显示过渡动效。
代码示例:
  1. @Entry
  2. @Component
  3. struct Index {
  4.   @State flag: boolean = true
  5.   build() {
  6.     Column() {
  7.       Button(this.flag ? '隐藏组件' : '展示组件')
  8.         .margin(30)
  9.         .onClick(() => {
  10.           animateTo({ duration: 1000 }, () => {
  11.             this.flag = !this.flag
  12.           })
  13.         })
  14.       if (this.flag) {
  15.         Image($r('app.media.icon'))
  16.           .width(300)
  17.           .height(300)
  18.           .transition({ type: TransitionType.Insert, scale: { x: 0, y: 1.0 } })
  19.           .transition({ type: TransitionType.Delete, rotate: { angle: 180 } })
  20.       }
  21.     }
  22.       .width('100%')
  23.   }
  24. }
复制代码
TransitionOptions枚举阐明:

参数名称参数类型必填参数描述typeTransitionType否 默认包罗组件新增和删除。默认值:TransitionType.All。
opacitynumber 设置组件转场时的透明度效果,为插入时出发点和删除时尽头的值。默认值:1。
translate {
        x? : number | string,
        y? : number | string,
        z? : number | string,
}
  设置组件转场时的平移效果,为插入时出发点和删除时尽头的值。
-x:横向的平移距离。
-y:纵向的平移距离。
-z:竖向的平移距离。
scale {
        x? : number,
        y? : number,
        z? : number,
        centerX? : number | string,
        centerY? : number | string,
}
  设置组件转场时的缩放效果,为插入时出发点和删除时尽头的值。
-x:横向放大倍数(或缩小比例)。
-y:纵向放大倍数(或缩小比例)。
-z:竖向放大倍数(或缩小比例)。
- centerX、centerY指缩放中央点,centerX和centerY默认值是"50%"。
- 中央点为0时,默认的是组件的左上角。
rotate {
        x?: number,
        y?: number,
        z?: number,
        angle?: number | string,
        centerX?: number | string,
        centerY?: number | string,
}
  设置组件转场时的旋转效果,为插入时出发点和删除时尽头的值。
-x:横向的旋转向量。
-y:纵向的旋转向量。
-z:竖向的旋转向量。
- centerX,centerY指旋转中央点,centerX和centerY默认值是"50%"。
- 中央点为(0,0)时,默认的是组件的左上角。
  TransitionType枚举阐明:



  •  All:指定当前的Transition动效生效在组件的全部变化场景。
  • Insert:指定当前的Transition动效生效在组件的插入显示场景。
  • Delete:指定当前的Transition动效生效在组件的删除隐藏场景。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表