当前位置:   article > 正文

鸿蒙 - arkTs:属性动画,显式动画,组件转场动画_鸿蒙开发中属性对话 转场动画 显示动画

鸿蒙开发中属性对话 转场动画 显示动画

属性动画:

属性动画是通过设置组件的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动效生效在组件的删除隐藏场景。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/245383
推荐阅读
相关标签
  

闽ICP备14008679号