绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
HarmonyOS Lottie 组件,让动画绘制更简单
2022-02-22 11:55:40

动画是UI界面的重要元素之一,精心设计的动画能使UI界面更直观,有助于改进应用程序的外观并改善用户体验。
ArkUI开发框架为开发者提供了丰富的动画能力,如属性动画、转场动画及自定义动画等。这些动画能力帮助开发者美化了UI界面,但不适用于绘制某些比较复杂的动画,例如,属性动画主要针对动画的通用属性进行动态变化,内容动效不够丰富,且变更时需要修改或重写代码;Gif动态图放大后锯齿明显,精度越高占用存储空间越大,直接影响安装包的大小;svg动画DOM节点多开销大,缺乏与用户的交互。因此,我们引入了比较成熟的Lottie组件,提升了ArkUI开发框架的动画能力。

一、Lottie介绍

1. 什么是Lottie?

图1 整体流程

2. Lottie绘制流程

图2 lottie绘制流程
  • 动画加载准备,在使用Lottie加载动画前需先通过插件 bodymovin 将AE生成的动画文件转换为通用的 json 格式描述文件。开发者也可以从互联网获取合适的动画资源直接应用。(获取链接:https://lottiefiles.com/
  • 获取json文件中的动画数据。
  • 解析json文件中的动画数据。
  • 创建动画实例,设置动画信息。
  • 初始化布局宽高,设置绘制样式等信息。
  • 启动动画,触发逐帧绘制。
  • 更新动画进度。
  • 返回动画实例,通过loadAnimation()接口返回动画实例AnimationItem。
  • 控制动画,Lottie提供了一整套简洁易用API,如停止stop()、暂停pause()、播放play()、播放流转togglePause()、方向setDirection()、速度setSpeed()等。

3. Lottie优点


  • 只需使用Lottie解析json文件就能实现动画的加载,基本上实现了0代码开发。
  • 应用开发者可以通过修改json文件的参数,将动画运行到不同的应用程序中,实现动画的一次设计多端使用。
  • 应用开发者可从网络直接下载json文件,实时更新动画资源。
  • Lottie基于canvas 画布进行基础的2D渲染,让动画流畅度更高。
  • Lottie可以将UX设计师给出的复杂动画效果还原到应用程序中 。
  • Lottie提供了丰富的API,让开发者能轻松控制动画,大大提高了开发效率。

二、Lottie实战


1. 创建项目

图3 创建工程

2. 添加依赖

图4 指定npm仓库地址

图5 下载Lottie组件

3. 导出动画资源并保存

图6 json保存路径

4. 编写逻辑代码


import lottie from '@ohos/lottie-ohos-ets'
@Entry
@Component
struct Index {
private controller: RenderingContext = new RenderingContext();
// 动画别名
private animateName: string = "animation";
// 动画资源相对路径
private animatePath: string = "common/lottie/animation.json";
private onPageHide(): void {
// 随页面隐藏销毁动画
lottie.destroy();
}
build() {
Column() {
// 声明Animator与Canvas组件
Animator('__lottie_ets')
Canvas(this.controller)
.width('30%')
.height('20%')
.backgroundColor('#ff0000')
.onAppear(() => {
// 随Canvas布局自动加载动画
let anim = lottie.loadAnimation({
container: this.controller,
renderer: 'canvas',
loop: true,
autoplay: true,
name: this.animateName,
path: this.animatePath
})
})
Button('togglePause')
.onClick(() => {
// 声明button按键与设置点击事件,通过点击控制动画暂停与播放的切换
lottie.togglePause(this.animateName);
})
}
.width('')
.height('')
}
}

效果如下所示:

以上就是ArkUI开发框架中Lottie组件的使用,希望广大开发者能利用这个强大的开源组件开发出更多精美的应用。

 

扫码添加开发者小助手微信
获取更多HarmonyOS开发资源和开发者活动资讯

分享好友

分享这个小栈给你的朋友们,一起进步吧。

HarmonyOS开发者社区
创建时间:2021-11-12 10:38:00
提供HarmonyOS关键技术解析、版本更新、开发者实践和活动资讯,欢迎各位开发者加入HarmonyOS生态,一起创造无限可能!
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • HarmonyOS开发者社区
    栈主
戳我,来吐槽~