
基于imageKnife对gif图的管理
前置准备
imageKnife安装:
imageKnife请求网络gif的时,需要开通网络权限,在使用imageknife的模块module.json5中添加网络权限:
在项目内初始化ImageKnifeOption,配置请求头和加载图片的基本参数:
然后将加载好的数据传给ImageKnifeComponent,一个默认的样式就写好了。
场景
场景一:imageKnife可以实现控制gif图片的播放次数与帧数的定格
核心代码
实例化ImageKnifeOption后,添加gif属性,将字段playTime设置传入播放的次数,即可完成播放次数的控制。
添加gif属性,将字段seekTo设置传入要定格的帧数,即可完成定格帧数。
场景二:imageKnife实现播放和暂停gif的功能
核心代码
实例化ImageKnifeOption后,设置autoplay图片属性true/false,完成gif的暂停和继续播放。
场景三:imageKnife对于网络环境和本地的加载的方式
核心代码
实例化ImageKnifeOption后,将索引传入对应的点击事件,分别加载本地资源和网络资源。
- 本地资源格式:loadSrc:$r('app.media.gifSample')。
- 网络资源格式:oadSrc = 'https://xxxx.gif'。
场景四:imageKnife对于gif样式边框的设置,包括边框的宽度,颜色,圆角
核心代码
实例化ImageKnifeOption后,将设置好的参数传入drawLifeCycle: ImageKnifeDrawFactory.createRoundLifeCycle,实现边框效果的转换。
场景五:imageKnife获取gif图片的基本信息,包括宽度,高度,帧率,总帧数
核心代码
接口 | 参数 | 说明 |
addListener(func: AsyncCallback) | func: AsyncCallback | 配置整个监听回调,数据正常加载返回,加载失败返回错误信息 |
实例化ImageKnifeOption后,先实例化网络请求new RequestOption(),load加载gif链接,添加监听属性addListener,回调返回拿到对象的width,height,delay。
因为gif动图本质是一个播放,所以将每次拿到的帧数相加可以得到总帧数(max),经过for循环找到循环的次数maxtimes,再用总帧数除以次数得到每秒帧率avg。
注意:
1. 加载网络请求的和本地格式要注意区分。
2. 添加权限后要配置ImageKnifeOption的请求头。
