基于lottie的动画资源加载
简介
lottie是一个适用于HarmonyOS的动画库,它可以解析json格式的动画,并在移动设备上进行本地渲染。
下载安裝:ohpm install @ohos/lottie。
场景一:本地资源加载
path相对路径加载
项目内entry/src/main/ets文件夹下创建和pages同级的目录common。
将需要播放的json文件放在目录common下。
path路径加载只支持文件夹下的相对路径,不能使用./或者../的相对路径,会导致动画加载不出来
- 正确格式:path: 'common/lottie/grunt.json'。
- 错误格式:path: './common/lottie/grunt.json'。
核心代码
ResourceManager
animationData参数:可结合ResourceManager进行读取资源文件内容进行设置。
下图为resource的路径。
创建一个对象储存从rawfile中获取的数据。
获取rawfile下得文件,获取red_heart.json里的内容,使用utf-8解码得到JSON,解析JSON后得到数据。
给animationData属性赋值,加载数据。
场景二:不同的网络资源加载
uri资源加载
uri 参数:支持加载网络资源和通过URI路径方式加载动画,该方式需申请 ohos.permission.INTERNET,ohos.permission.GET_NETWORK_INFO两个权限。
加载网络json
将配置好的json网络链接以字符串形式加到uri属性。
网络zip
将配置好的zip包链接以字符串形式加到uri属性。
网络img
将配置好的img链接以字符串形式加到uri属性。
场景三: hsp加载
准备好shareLibrary内得资源,把动画json资源文件放在rawfile下进行读取加载。
使用ResourceManager加载方式(场景一内),调用getContext注意需要加载数据得模块,因为需要使用到得是sharedLibrary内得资源,所以createModuleContext得模块为'sharedLibrary',getRawFile指定模块内需要加载哪个json文件。
在HSP场景下,lottie加载动画json资源文件需通过animationData方式加载。
HSP组件加载
1.新建HspPage组件
2.在HspPage组件内,struct结构体前使用export关键字。
3.在shareLibrary跟目录里导出目标组件。
4.在希望使用组件的模块的oh-package.json5文件中添加依赖,还可以指定组件的别名。
5.在希望使用的组件页面通过自定义的别名导入目标组件。
注意事项:
json文件路径不能使用 ./ 或者 ../ 等相对路径,相对路径获取不到动画源数据,会导致动画加载不出来。传递给loadAnimation方法的路径是相对于pages父文件夹为基准的,而index页面内引入的相对路径的动画是以index.ets文件为基准的,两者基准不一致。
下载资源的路径保存在沙箱路径的cache目录和file目录下。
受教了
涨知识啦