HarmonyOS 鸿蒙Next arkts对gif动图的支持 能否控制播放 重播之类?

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next arkts对gif动图的支持 能否控制播放 重播之类? 找到了一个Image组件支持gif图显示,但没有看到相关控制的api,而且还提到卡片中只能播放一次

问题:有没有控制播放的能力?比如gif动图

cke_770.png


更多关于HarmonyOS 鸿蒙Next arkts对gif动图的支持 能否控制播放 重播之类?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

Image组件主要作用是显示图片,对动图的支持还是要根据图片格式来分别处理。

推荐一个第三方库gif-drawable,支持Gif渲染及控制的相关功能,原理是直接基于Canvas进行控制的,具体能力有:

  • 支持播放GIF图片。
  • 支持控制GIF播放/暂停。
  • 支持重置GIF播放动画。
  • 支持调节GIF播放速率。
  • 支持监听GIF所有帧显示完成后的回调。

开发步骤如下:

  1. 安装相关包
ohpm install [@ohos](/user/ohos)/gif-drawable

使用taskpool替代worker,无需额外工程配置

  1. 在需要展示的位置使用GIFComponent自定义组件
import { GIFComponent, ResourceLoader } from '[@ohos](/user/ohos)/gif-drawable'
// gif绘制组件用户属性设置
@State model:GIFComponent.ControllerOptions = new GIFComponent.ControllerOptions();
// 是否自动播放
@State gifAutoPlay:boolean = true;
// 重置GIF播放,每次取反都能生效
@State gifReset:boolean = true;
// 在ARKUI的其他容器组件中添加该组件 如果需要绑定滚动组件内部可见/不可见状态 gif自动暂停开始播放能力,只需要加上bindScroller字段即可。
GIFComponent({
  model:$model, 
  autoPlay:$gifAutoPlay, 
  resetGif: $gifReset
})
  1. 配置 GIFComponent.ControllerOptions 达到更多的效果
this.gifAutoPlay = false;
// 销毁上一次资源
this.model.destroy();
// 新创建一个modelx,用于配置用户参数
let modelx = new GIFComponent.ControllerOptions()
modelx
// 配置回调动画结束监听,和耗时监听    
.setLoopFinish((loopTime) => {
this.gifLoopCount++;
this.loopHint = '当前gif循环了' + this.gifLoopCount + '次,耗时=' + loopTime + 'ms'
})
// 设置图像和组件的适配类型
.setScaleType(this.scaleType)
// 设置播放速率
.setSpeedFactor(this.speedFactor)
// 加载网络图片,getContext(this)中的this指向page页面或者组件都可以
ResourceLoader.downloadDataWithContext(getContext(this), {
url: 'https://pic.ibaotu.com/gif/18/17/16/51u888piCtqj.gif!fwpaa70/fw/700'
}, (sucBuffer) => {
// 网络资源sucBuffer返回后处理
modelx.loadBuffer(sucBuffer, () => {
console.log('网络加载解析成功回调绘制!')
// 开启自动播放   
this.gifAutoPlay = true;
// 给组件数据赋新的用户配置参数,达到后续gif动画效果   
this.model = modelx;
})
}, (err) => {
// 用户根据返回的错误信息,进行业务处理(展示一张失败占位图、再次加载一次、加载其他图片等)

具体链接: [https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fgif-drawable](https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fgif-drawable)

更多关于HarmonyOS 鸿蒙Next arkts对gif动图的支持 能否控制播放 重播之类?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,ArkTS对GIF动图的支持是有限的。目前,ArkTS主要通过Image组件来显示GIF动图,但默认情况下,GIF动图会自动播放,且无法直接通过ArkTS API控制其播放、暂停或重播等行为。如果需要更精细的控制,可能需要借助原生能力或自定义组件来实现。

在HarmonyOS的ArkTS中,可以通过Image组件加载GIF动图,并利用ImageAnimator组件控制GIF的播放、暂停、重播等操作。ImageAnimator提供了startpauseresumestop方法,开发者可以通过这些方法精确控制GIF的播放行为。此外,还可以通过设置iterations属性来控制GIF的播放次数,实现重播功能。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!