小工具知识网

当前位置: 首页 > 行业知识 > 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageAnimator)

行业知识

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageAnimator)

2026-11-12 17:05:09 来源:互联网转载

���供帧动画组件来实现逐帧播放图片的能力,可以配置需要播放的图片列表,每张图片可以配置时长。

说明:

该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

无

接口

ImageAnimator()

从API version 10开始,该接口支持在ArkTS卡片中使用。

属性

除支持通用属性外,还支持以下属性:

参数名称参数类型参数描述
imagesArray设置图片帧信息集合。每一帧的帧信息(ImageFrameInfo)包含图片路径、图片大小、图片位置和图片播放时长信息,详见ImageFrameInfo属性说明。

默认值:[]
说明:

不支持动态更新。

从API version 10开始,该接口支持在ArkTS卡片中使用。

stateAnimationStatus默认为初始状态,用于控制播放状态。

默认值:AnimationStatus.Initial

从API version 10开始,该接口支持在ArkTS卡片中使用。

durationnumber单位为毫秒,默认时长为1000ms;duration为0时,不播放图片;值的改变只会在下一次循环开始时生效;当images中任意一帧图片设置了单独的duration后,该属性设置无效。

默认值:1000

从API version 10开始,该接口支持在ArkTS卡片中使用。

reverseboolean设置播放方向。false表示从第1张图片播放到最后1张图片; true表示从最后1张图片播放到第1张图片。

默认值:false

从API version 10开始,该接口支持在ArkTS卡片中使用。

fixedSizeboolean设置图片大小是否固定为组件大小。 true表示图片大小与组件大小一致,此时设置图片的width 、height 、top 和left属性是无效的。false表示每一张图片的width 、height 、top和left属性都要单独设置。

默认值:true

从API version 10开始,该接口支持在ArkTS卡片中使用。

preDecode(deprecated)number预解码的图片数量。例如该值设为2,则播放当前页时会提前加载后面两张图片至缓存以提升性能。

从API version 9开始废弃。

默认值:0

fillModeFillMode设置当前播放方向下,动画开始前和结束后的状态,可选值参见FillMode说明。动画结束后的状态由fillMode和reverse属性共同决定。例如,fillMode为Forwards表示停止时维持动画最后一个关键帧的状态,若reverse为false则维持正播的最后一帧,即最后一张图,若reverse为true则维持逆播的最后一帧,即第一张图。

默认值:FillMode.Forwards

从API version 10开始,该接口支持在ArkTS卡片中使用。

iterationsnumber默认播放一次,设置为-1时表示无限次播放。

默认值:1

ImageFrameInfo对象说明

参数名称参数类型必填参数描述
srcstring | Resource9+是图片路径,图片格式为svg,png和jpg,从API Version9开始支持Resource类型的路径。

从API version 10开始,该接口支持在ArkTS卡片中使用。

widthnumber | string否图片宽度。

默认值:0

从API version 10开始,该接口支持在ArkTS卡片中使用

heightnumber | string否图片高度。

默认值:0

从API version 10开始,该接口支持在ArkTS卡片中使用

topnumber | string否图片相对于组件左上角的纵向坐标。

默认值:0

从API version 10开始,该接口支持在ArkTS卡片中使用

leftnumber | string否图片相对于组件左上角的横向坐标。

默认值:0

从API version 10开始,该接口支持在ArkTS卡片中使用

durationnumber否每一帧图片的播放时长,单位毫秒。

默认值:0

事件

除支持通用事件外,还支持以下事件:

名称功能描述
onStart(event: () => void)状态回调,动画开始播放时触发。

从API version 10开始,该接口支持在ArkTS卡片中使用。

onPause(event: () => void)状态回调,动画暂停播放时触发。

从API version 10开始,该接口支持在ArkTS卡片中使用。

onRepeat(event: () => void)状态回调,动画重复播放时触发。
onCancel(event: () => void)状态回调,动画返回最初状态时触发。

从API version 10开始,该接口支持在ArkTS卡片中使用。

onFinish(event: () => void)状态回调,动画播放完成时或者停止播放时触发。

从API version 10开始,该接口支持在ArkTS卡片中使用。

示例

// xxx.ets@Entry@Componentstruct ImageAnimatorExample {  @State state: AnimationStatus = AnimationStatus.Initial  @State reverse: boolean = false  @State iterations: number = 1  build() {    Column({ space: 10 }) {      ImageAnimator()        .images([          {            src: $r('app.media.img1')          },          {            src: $r('app.media.img2')          },          {            src: $r('app.media.img3')          },          {            src: $r('app.media.img4')          }        ])        .duration(2000)        .state(this.state).reverse(this.reverse)        .fillMode(FillMode.None).iterations(this.iterations).width(340).height(240)        .margin({ top: 100 })        .onStart(() => {          console.info('Start')        })        .onPause(() => {          console.info('Pause')        })        .onRepeat(() => {          console.info('Repeat')        })        .onCancel(() => {          console.info('Cancel')        })        .onFinish(() => {          console.info('Finish')          this.state = AnimationStatus.Stopped        })      Row() {        Button('start').width(100).padding(5).onClick(() => {          this.state = AnimationStatus.Running        }).margin(5)        Button('pause').width(100).padding(5).onClick(() => {          this.state = AnimationStatus.Paused     // 显示当前帧图片        }).margin(5)        Button('stop').width(100).padding(5).onClick(() => {          this.state = AnimationStatus.Stopped    // 显示动画的起始帧图片        }).margin(5)      }      Row() {        Button('reverse').width(100).padding(5).onClick(() => {          this.reverse = !this.reverse        }).margin(5)        Button('once').width(100).padding(5).onClick(() => {          this.iterations = 1        }).margin(5)        Button('infinite').width(100).padding(5).onClick(() => {          this.iterations = -1 // 无限循环播放        }).margin(5)      }    }.width('100%').height('100%')  }}

最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(Harmony NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

 获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(Harmony NEXT)最新学习路线

  •  HarmonOS基础技能

    • HarmonOS就业必备技能 
    •  HarmonOS多媒体技术
      • 鸿蒙NaPi组件进阶
        • HarmonOS高级技能
          • 初识HarmonOS内核 
          • 实战就业级设备开发

            有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

            获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

            《鸿蒙 (OpenHarmony)开发入门教学视频》

            《鸿蒙生态应用开发V2.0白皮书》

            《鸿蒙 (OpenHarmony)开发基础到实战手册》

            OpenHarmony北向、南向开发环境搭建

             《鸿蒙开发基础》

            • ArkTS语言
            • 安装DevEco Studio
            • 运用你的第一个ArkTS应用
            • ArkUI声明式UI开发
            • .……

               《鸿蒙开发进阶》

              • Stage模型入门
              • 网络管理
              • 数据管理
              • 电话服务
              • 分布式应用开发
              • 通知与窗口管理
              • 多媒体技术
              • 安全技能
              • 任务管理
              • WebGL
              • 国际化开发
              • 应用测试
              • DFX面向未来设计
              • 鸿蒙系统移植和裁剪定制
              • ……

                《鸿蒙进阶实战》

                • ArkTS实践
                • UIAbility应用
                • 网络案例
                • ……

                   获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

                  总结

                  总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

上一篇:谷歌服务器在哪里?

下一篇:揭秘数字之谜,探寻416背后的真相与故事!