鸿蒙ImageAnimator组件使用指南以及应用实例------洛阳景点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
ImageAnimator
提供帧动画组件来实现逐帧播放图片的能力,可以配置需要播放的图片列表,每张图片可以配置时长。
接口
ImageAnimator()
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
属性
除支持通用属性外,还支持以下属性:
images
images(value: Array)
设置图片帧信息集合。不支持动态更新。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
state(value: AnimationStatus)
控制播放状态。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 类型 必填 说明
value AnimationStatus 是
默认为初始状态,用于控制播放状态。
默认值:AnimationStatus.Initial
duration
duration(value: number)
设置播放时长。当Images中任意一帧图片设置了单独的duration后,该属性设置无效。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 类型 必填 说明
value number 是
播放时长。
value为0时,不播放图片。
value的改变只会在下一次循环开始时生效。
单位:毫秒
默认值:1000ms
reverse
reverse(value: boolean)
设置播放方向。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 类型 必填 说明
value boolean 是
播放方向。
false表示从第1张图片播放到最后1张图片,true表示从最后1张图片播放到第1张图片。
默认值:false
fixedSize
fixedSize(value: boolean)
设置图片大小是否固定为组件大小。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 类型 必填 说明
value boolean 是
设置图片大小是否固定为组件大小。 true表示图片大小与组件大小一致,此时设置图片的width 、height 、top 和left属性是无效的。false表示每一张图片的width 、height 、top和left属性都要单独设置。
默认值:true
preDecode(deprecated)
preDecode(value: number)
设置预解码的图片数量。
从API version 9开始废弃。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 类型 必填 说明
value number 是
预解码的图片数量。例如该值设为2,则播放当前页时会提前加载后面两张图片至缓存以提升性能。
默认值:0
fillMode
fillMode(value: FillMode)
设置当前播放方向下,动画开始前和结束后的状态。动画结束后的状态由fillMode和reverse属性共同决定。例如,fillMode为Forwards表示停止时维持动画最后一个关键帧的状态,若reverse为false则维持正播的最后一帧,即最后一张图,若reverse为true则维持逆播的最后一帧,即第一张图。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 类型 必填 说明
value FillMode 是
当前播放方向下,动画开始前和结束后的状态。
默认值:FillMode.Forwards
iterations
iterations(value: number)
设置播放次数。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 类型 必填 说明
value number 是
默认播放一次,设置为-1时表示无限次播放。
默认值:1
ImageFrameInfo对象说明
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
名称 类型 必填 说明
src string | Resource9+ | PixelMap12+ 是
图片路径,图片格式为jpg、jpeg、svg、png、bmp、webp、ico和heif,从API Version9开始支持Resource类型的路径,从API version 12开始支持PixelMap类型。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
width number | string 否
图片宽度。
默认值:0
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用
height number | string 否
图片高度。
默认值:0
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用
top number | string 否
图片相对于组件左上角的纵向坐标。
默认值:0
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用
left number | string 否
图片相对于组件左上角的横向坐标。
默认值:0
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用
duration number 否
每一帧图片的播放时长,单位毫秒。
默认值:0
事件
除支持通用事件外,还支持以下事件:
onStart
onStart(event: () => void)
状态回调,动画开始播放时触发。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
onPause
onPause(event: () => void)
状态回调,动画暂停播放时触发。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
onRepeat
onRepeat(event: () => void)
状态回调,动画重复播放时触发。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
onCancel
onCancel(event: () => void)
状态回调,动画返回最初状态时触发。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
onFinish
onFinish(event: () => void)
状态回调,动画播放完成时或者停止播放时触发。
卡片能力: 从API version 10开始,该接口支持在ArkTS卡片中使用。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
应用实例—洛阳之旅
效果展示

完整代码
@Entry
@Component
struct ImageAnimatorExample {
@State state: AnimationStatus = AnimationStatus.Initial
@State reverse: boolean = false
@State iterations: number = 1
build() {
Column({ space: 10 }) {
ImageAnimator()
.images([
{
src: $r('app.media.imag1')
},
{
src: $r('app.media.imag2')
},
{
src: $r('app.media.image3')
},
{
src: $r('app.media.imag4')
},
{
src: $r('app.media.image5')
},
{
src: $r('app.media.image6')
},
{
src: $r('app.media.image7')
}
])
.duration(5000)
.state(this.state).reverse(this.reverse)
.fillMode(FillMode.None).iterations(this.iterations).width(340).height(550)
.margin({ top: 30 })
.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('开始播放').width(100).padding(5).onClick(() => {
this.state = AnimationStatus.Running
}).margin(5)
Button('暂停播放').width(100).padding(5).onClick(() => {
this.state = AnimationStatus.Paused // 显示当前帧图片
}).margin(5)
Button('取消播放').width(100).padding(5).onClick(() => {
this.state = AnimationStatus.Stopped // 显示动画的起始帧图片
}).margin(5)
}
Row() {
Button('反向播放').width(100).padding(5).onClick(() => {
this.reverse = !this.reverse
}).margin(5)
Button('播放一次').width(100).padding(5).onClick(() => {
this.iterations = 1
}).margin(5)
Button('循环播放').width(100).padding(5).onClick(() => {
this.iterations = -1 // 无限循环播放
}).margin(5)
}
}.width('100%').height('100%')
}
}
更多推荐


所有评论(0)