鸿蒙开发之帧动画ImageAnimator

发布时间:2024年01月18日

鸿蒙帧动画需要借助组件ImageAnimator。使用的时候想要让动画动起来需要设置state为AnimationStatus.Running

@Entry
@Component
struct OfficialImageAnimatorPage {
  build() {
      Column() {
        ImageAnimator()
          //动画数组
          .images([
            {src:$r('app.media.icon')},
            {src:$rawfile('111.png')},
            {src:$rawfile('222.png')},
            {src:$rawfile('333.png')},
          ])
          //动画时长
          .duration(2000)
          .margin({top:30})
          .backgroundColor(Color.Green)
          //开始
          .state(AnimationStatus.Running)
          //正序还是倒序
          .reverse(false)
          .fillMode(FillMode.Forwards)
          //重复次数,-1为无限
          .iterations(-1)
          .width(340)
          .height(240)
          //动画开始回调函数
          .onStart(() => {
            console.info(' ImageAnimator onStart')
          })
          .onPause(() => {
            console.info('ImageAnimator onPause')
          })
          .onRepeat(() => {
            console.info('ImageAnimator onRepeat')
          })
          .onCancel(() => {
            console.info('ImageAnimator onCancel')
          })
          .onFinish(() => {
            console.info('ImageAnimator onFinish')
          })
      }
      .width('100%')
      .height('100%')
  }
}

如果,帧动画的图片大小不一样,并且间隔时间也不同。就需要设置参数fixedSize(false)。但是,需要注意的是,设置fixedSize为false后,需要设置每个图片的大小,当然也可以搭配上动画时长,如下

@Entry
@Component
struct OfficialImageAnimatorPage {
  build() {
      Column() {
        ImageAnimator()
          //动画数组
          .images([
            {src:$r('app.media.icon'),
              width:100,
              height:100,
              top:40,
              left:40,
              duration:1000},
            {src:$rawfile('111.png'),
              width:200,
              height:200,
              top:30,
              left:50,
              duration:200},
            {src:$rawfile('222.png'),
              width:300,
              height:200,
              top:10,
              left:50,
              duration:500},
            {src:$rawfile('333.png'),
              width:100,
              height:100,
              top:10,
              left:150,
              duration:300},
          ])
          //动画时长
          .duration(2000)
          .margin({top:30})
          .backgroundColor(Color.Green)
          //开始
          .state(AnimationStatus.Running)
          //正序还是倒序
          .reverse(false)
          .fillMode(FillMode.Forwards)
          //图片自己设置宽高
          .fixedSize(false)
          //重复次数,-1为无限
          .iterations(-1)
          .width(340)
          .height(240)
          //动画开始回调函数
          .onStart(() => {
            console.info(' ImageAnimator onStart')
          })
          .onPause(() => {
            console.info('ImageAnimator onPause')
          })
          .onRepeat(() => {
            console.info('ImageAnimator onRepeat')
          })
          .onCancel(() => {
            console.info('ImageAnimator onCancel')
          })
          .onFinish(() => {
            console.info('ImageAnimator onFinish')
          })
      }
      .width('100%')
      .height('100%')
  }
}

文章来源:https://blog.csdn.net/Lu_Ca/article/details/135673301
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。