HarmonyOS 组合动画如何实现

如让Image出现一组合动画,先让透明度发生变化,再缩放,再让透明度变化,然后再缩放

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

参考以下两种动画,demo1:

import { UIContext } from '@ohos.arkui.UIContext';

@Entry
@Component
struct SH_issue05_02 {
  @State myScale: number = 1.0;
  @State myOpacity: number = 1.0
  uiContext: UIContext | undefined = undefined;

  aboutToAppear() {
    this.uiContext = this.getUIContext?.();
  }

  build() {
    Column() {
      Circle()
        .width(100)
        .height(100)
        .fill("#46B1E3")
        .margin(100)
        .scale({
          x: this.myScale,
          y: this.myScale
        })//设置x轴/y轴的缩放
        .opacity(this.myOpacity)
        .onClick(() => {
          if (!this.uiContext) {
            console.info("no uiContext, keyframe failed");
            return;
          }
          this.myScale =
            1;
          // 设置关键帧动画整体播放3次
          this.uiContext.keyframeAnimateTo({ iterations: -1 }, [
            {
              // 第一段关键帧动画时长为500ms,opacity属性做从1到0.5的动画
              duration: 500, event: () => {
              this.myOpacity = 0.5
            }
            },
            {
              // 第二段关键帧动画时长为500ms,scale属性做从1到1.5的动画
              duration: 500, event: () => {
              this.myScale = 1.5;
            }
            },
            {
              // 第三段关键帧动画时长为500ms,opacity属性做从0.5到1的动画
              duration: 500, event: () => {
              this.myOpacity = 1
            }
            },
            {
              // 第四段关键帧动画时长为500ms,scale属性做从1.5到1的动画
              duration: 500, event: () => {
              this.myScale = 1;
            }
            }
          ]);
        })
    }.width('100%')
    .margin({ top: 5 })
  }
}

demo2:

@Entry
@Component
struct Index {
  @State myScale: number = 1.0;
  @State myOpacity: number = 1.0

  build() {
    Column() {
      Button('change size')
        .width(200)
        .height(200)
        .scale({
          x: this.myScale,
          y: this.myScale
        })//设置x轴/y轴的缩放
        .opacity(this.myOpacity)
        .margin(30).onClick(() => {
        //动画1
        animateTo({
          duration: 3000,
          curve: Curve.EaseInOut,
          iterations: -1, // 设置-1表示动画无限循环
          playMode: PlayMode.Normal,
          onFinish: () => {
            console.info('play end')
          }
        },
          () => {
            console.info('play1>>>>')
            this.myOpacity = 0.5
          })
        //动画2 可以用线程延迟0.5秒
        animateTo({
          duration: 3500,
          curve: Curve.EaseInOut,
          delay: 500,
          iterations: -1, // 设置-1表示动画无限循环
          playMode: PlayMode.Normal,
          onFinish: () => {
            console.info('play end2222')},
        },
          () => {
            console.info('play2>>>>')
            this.myScale = 0.5;
          })
        //动画3 可以用线程延迟0.5秒
        animateTo({
          duration: 6500,
          curve: Curve.EaseInOut,
          delay: 500,
          iterations: -1, // 设置-1表示动画无限循环
          playMode: PlayMode.Normal,
          onFinish: () => {
            console.info('play end3333')},
        },
          () => {
            console.info('play3>>>>')
            this.myOpacity = 1;
          })
        //动画4 可以用线程延迟0.5秒
        animateTo({
          duration: 7000,
          curve: Curve.EaseInOut,
          delay: 500,
          iterations: -1, // 设置-1表示动画无限循环
          playMode: PlayMode.Normal,
          onFinish: () => {
            console.info('play end4444')},
        },
          () => {
            console.info('play4>>>>')
            this.myScale = 1;
          })
      })
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
求教ArkUI如何实现组合动画
5549浏览 • 1回复 待解决
组合样式怎样去实现导入导出
1934浏览 • 1回复 待解决
如何申请组合授权权限?
482浏览 • 1回复 待解决
组合索引应该如何设计?
2495浏览 • 1回复 待解决
HarmonyOS 如何实现WaveView动画
373浏览 • 1回复 待解决
HarmonyOS 如何实现RippleView动画
340浏览 • 1回复 待解决
HarmonyOS 如何实现呼吸灯动画
23浏览 • 1回复 待解决
属性动画如何实现宽高动画效果
2074浏览 • 1回复 待解决
HarmonyOS 如何实现动画集合?
180浏览 • 1回复 待解决
HarmonyOS 如何实现音频声浪动画
710浏览 • 1回复 待解决
HarmonyOS 如何实现旋转动画
484浏览 • 1回复 待解决
HarmonyOS如何实现动态缩放动画
582浏览 • 1回复 待解决
HarmonyOS 动画实现
5浏览 • 1回复 待解决
如何实现动画转场效果
876浏览 • 1回复 待解决
如何应用属性动画实现宽高的动画
438浏览 • 1回复 待解决
HarmonyOS router跳转动画如何实现
30浏览 • 1回复 待解决
HarmonyOS 如何实现放大缩小的动画
417浏览 • 1回复 待解决
HarmonyOS Canvas 实现动画
64浏览 • 1回复 待解决
鸿蒙如何实现动画值变化
9454浏览 • 1回复 待解决