0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Lottie组件提升ArkUI开发框架的动画能力

HarmonyOS开发者 来源:HarmonyOS开发者 作者:HarmonyOS开发者 2022-02-25 13:16 次阅读

动画是UI界面的重要元素之一,精心设计的动画能使UI界面更直观,有助于改进应用程序的外观并改善用户体验。

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

一、Lottie介绍

1 什么是Lottie?

Lottie是一款能够为应用添加动画的开源组件,它可以解析AE(After Effects)导出的json文件,让复杂的动画资源轻松运行在应用程序中。如图1所示,动画文件通过AE的bodymovin插件转换成通用的json格式描述文件后,应用开发者只需使用Lottie解析json文件,就能将动画绘制出来。

Lottie组件提升ArkUI开发框架的动画能力

图1 整体流程

2 Lottie绘制流程

Lottie解析json格式的动画描述文件后,会基于canvas 画布进行2D渲染,并结合原生组件Animator实现动画效果。具体绘制流程如下图2所示:

Lottie组件提升ArkUI开发框架的动画能力

图2 lottie绘制流程

动画加载准备,在使用Lottie加载动画前需先通过插件 bodymovin 将AE生成的动画文件转换为通用的 json 格式描述文件。开发者也可以从互联网获取合适的动画资源直接应用。

获取json文件中的动画数据。

解析json文件中的动画数据。

创建动画实例,设置动画信息

初始化布局宽高,设置绘制样式等信息。

启动动画,触发逐帧绘制。

更新动画进度。

返回动画实例,通过loadAnimation()接口返回动画实例AnimationItem。

控制动画,Lottie提供了一整套简洁易用API,如停止stop()、暂停pause()、播放play()、播放流转togglePause()、方向setDirection()、速度setSpeed()等。

3 Lottie优点

通过上文的介绍,我们可以总结出Lottie的以下优点:

只需使用Lottie解析json文件就能实现动画的加载,基本上实现了0代码开发。

应用开发者可以通过修改json文件的参数,将动画运行到不同的应用程序中,实现动画的一次设计多端使用。

应用开发者可从网络直接下载json文件,实时更新动画资源。

Lottie基于canvas 画布进行基础的2D渲染,让动画流畅度更高。

Lottie可以将UX设计师给出的复杂动画效果100%还原到应用程序中 。

Lottie提供了丰富的API,让开发者能轻松控制动画,大大提高了开发效率。

通过上文的介绍,我们可以总结出Lottie的以下优点:

只需使用Lottie解析json文件就能实现动画的加载,基本上实现了0代码开发。

应用开发者可以通过修改json文件的参数,将动画运行到不同的应用程序中,实现动画的一次设计多端使用。

应用开发者可从网络直接下载json文件,实时更新动画资源。

Lottie基于canvas 画布进行基础的2D渲染,让动画流畅度更高。

Lottie可以将UX设计师给出的复杂动画效果100%还原到应用程序中 。

Lottie提供了丰富的API,让开发者能轻松控制动画,大大提高了开发效率。

二、Lottie实战

通过上文对Lottie的介绍,相信很多小伙伴已经感受到了Lottie组件的强大,下面我们将通过一个简单的动画示例来为大家展示ArkUI开发框架中Lottie组件的使用。

1 创建项目

如图3所示,在DevEco Studio中新建Lottis_Test项目,项目类型选择Application,语言选择eTS,点击Finish完成创建。

Lottie组件提升ArkUI开发框架的动画能力

图3 创建工程

2 添加依赖

成功创建项目后,接下来就是将Lottie组件下载至项目中。首先,我们需找到npm配置文件,并在.npmrc 配置文件中添加 @ohos 的scope仓库地址:@ohos:registry=https://repo.harmonyos.com/npm/,如图4所示:

Lottie组件提升ArkUI开发框架的动画能力     

图4 指定npm仓库地址

配置好npm仓库地址后,如图5所示,在DevEcoStudio的底部导航栏,点击“Terminal”(快捷键Alt+F12),键入命令:npm install @ohos/lottie-ohos-ets并回车,此时Lottie组件会自动下载至项目中。下载完成后工程根目录下会生成node_modules/@ohos/lottie-ohos-ets目录。

Lottie组件提升ArkUI开发框架的动画能力

图5 下载Lottie组件

注:由于目前lottie组件正在开源准备中,@ohos/lottie-ohos-ets仓库预计在3月底发布,敬请期待。

3 导出动画资源并保存

将After Effects 导出的json动画资源文件保存到项目中,如图6所示,保存路径如下:entry/src/main/ets/MainAbility/common/lottie/animation.json,

Lottie组件提升ArkUI开发框架的动画能力

图6 json保存路径

4 编写逻辑代码

使用扩展的TS语言在工程的index.ets文件中编写业务逻辑代码 ,为了兼顾资源的及时释放,在组件@Component声明内的声明周期onDisappear()或onPageHide()中调用lottie.destory()释放资源。示例代码如下所示:

importlottiefrom'@ohos/lottie-ohos-ets'@Entry@Componentstruct 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('100%')    .height('100%')  }}

(左右滑动,查看更多)

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

原文标题:Lottie组件,让动画绘制更简单

文章出处:【微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 界面
    +关注

    关注

    0

    文章

    58

    浏览量

    15397
  • 开源
    +关注

    关注

    3

    文章

    2982

    浏览量

    41698
  • lottie
    +关注

    关注

    0

    文章

    4

    浏览量

    19692

原文标题:Lottie组件,让动画绘制更简单

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HarmonyOS Lottie组件,让动画绘制更简单

    存储空间越大,直接影响安装包的大小;svg动画DOM节点多开销大,缺乏与用户的交互。 因此,我们引入了比较成熟的Lottie组件提升ArkUI
    发表于 02-22 14:55

    OpenHarmony 3.1 Release版本关键特性解析——ArkUI框架又有哪些新增能力

    (以下简称 v3.1)版本的发布,ArkUI 框架也增加了许多新能力,接下来一起看看都有哪些新增能力吧。ArkUI
    发表于 05-31 18:05

    HDD杭州站•ArkUI开发更灵活

    HTML5页面加载特性。 UI开发效率提升:在交互归一、多态样式自定义、工具链体验等方面进行了增强和提升,让开发更灵活。 图1 ArkUI
    发表于 08-05 11:33

    OpenHarmony有氧拳击之应用端开发

    ;#125;四、击中动画像前文提到的“下落”动画适合使用属性动画,那么当我们需要实现更复杂,如上图的动画效果时,该如何来实现呢?Lottie
    发表于 10-09 15:19

    ArkUI框架,更懂程序员的UI信息语法

    支持判断分屏状态、折叠屏展开状态等,这样就解决了我一次开发多端部署的难题。 同时,ArkUI框架开发者提供了多态组件,同一控件在不同的设备
    发表于 12-14 11:23

    4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

    框架组件用法,完成一款健康饮食应用的界面开发,结合DevEco Studio提供的多设备预览能力,体验ArkUI
    发表于 01-05 11:49

    ArkUI能力,助力应用开发更便捷

    ArkUI是一套构建分布式应用的声明式UI开发框架。它具备简洁自然的UI信息语法、丰富的UI组件、多维的状态管理,以及实时界面预览等相关能力
    发表于 02-15 11:40

    OpenHarmony应用开发-ArkUI方舟开发框架简析

    方舟开发框架(简称ArkUI)为OpenHarmony应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、
    发表于 04-23 09:35

    面向万物智联的应用框架的思考和探索(下)

    度预览等能力,帮助开发提升应用开发效率,并能在多种设备实现生动而流畅的用户体验。同时可进一步扩展到多个OS平台。下图描述了ArkUI
    发表于 05-06 10:17

    一文详细了解ArkUI框架新增能力

    ArkUI是一套UI开发框架,它提供了开发者进行应用UI开发时所必须的能力。随着OpenHarm
    的头像 发表于 04-27 13:44 1115次阅读
    一文详细了解<b class='flag-5'>ArkUI</b><b class='flag-5'>框架</b>新增<b class='flag-5'>能力</b>

    ArkUI开发框架动画能力

    动画加载准备,在使用 Lottie 加载动画前需先通过插件 bodymovin 将 AE 生成的动画文件转换为通用的 json 格式描述文件。开发
    的头像 发表于 06-17 11:44 1109次阅读

    Lottie移动应用动画效果框架

    ./oschina_soft/lottie-android.zip
    发表于 06-24 14:25 1次下载
    <b class='flag-5'>Lottie</b>移动应用<b class='flag-5'>动画</b>效果<b class='flag-5'>框架</b>

    ArkUI能力,助力应用开发更便捷

    管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用户体验。随着HarmonyOS 3.1版本的发布,ArkUI也新增许多
    的头像 发表于 02-15 16:35 659次阅读

    【开源三方库】Easyui:基于OpenAtom OpenHarmony ArkUI深度定制的组件框架

    的轻量、可靠的移动端组件库,它是对OpenAtom OpenHarmony(以下简称“OpenHarmony”) ArkUI进行深度定制的组件框架。Easyui可扩展性较强,可以基于源
    的头像 发表于 11-09 10:55 326次阅读
    【开源三方库】Easyui:基于OpenAtom OpenHarmony <b class='flag-5'>ArkUI</b>深度定制的<b class='flag-5'>组件</b><b class='flag-5'>框架</b>

    鸿蒙ArkUI开发-Tabs组件的使用

    鸿蒙ArkUI开发-Tabs组件的使用
    的头像 发表于 01-19 16:01 361次阅读
    鸿蒙<b class='flag-5'>ArkUI</b><b class='flag-5'>开发</b>-Tabs<b class='flag-5'>组件</b>的使用