写点什么

AirBnb 开源动画引擎 Lottie:采用 Core Animation 提高性能

  • 2022-12-29
    北京
  • 本文字数:941 字

    阅读完需:约 3 分钟

AirBnb开源动画引擎Lottie:采用Core Animation提高性能

AirBnb宣布了其开源矢量动画引擎 Lottie 的第四次主要迭代。AirBnb iOS 工程师 Cal Stephens 表示,由于采用了核心动画(Core Animation),Lottie 4.0 提供了显著的性能改进,并降低了 CPU 负载。

 

Lottie 是一个用于 iOS 和 Android 的库,可以实时渲染 After Effects 动画。Lottie 中的动画是通过 JSON 文件描述的,可以使用Bodymovin插件从 After Effects 中导出。Lottie 将对 JSON 进行解码,并访问渲染动画所需的所有资源,就像它只是应用程序中的另一个静态资源一样。

 

在 Lottie 4.0 中,AirBnb 放弃了使用CADisplayLink在主 CPU 线程上制作图形动画的原始方法:

 

每帧一次,Lottie 将在主线程上执行代码,以推进动画的进度并重新渲染其内容。这意味着动画在播放时将消耗 5–20%以上的 CPU,从而减少了用于应用程序其余部分的可用 CPU 周期。

 

根据 Stephens 的说法,这使得 Lottie 在更复杂的情况下无法维持所需的帧速并且开始丢弃帧会变得相对常见。此外,当主线程忙于一些昂贵的任务时,动画可能会出现一些抖动。

 

切换到核心动画(Core Animation)意味着动画被卸载到 GPU 上,这有三个好处:利用硬件加速,减少 CPU 负载,并在 CPU 繁忙时提高帧速。

 

例如,Airbnb 应用程序在首次启动时显示 Lottie 动画。我们在这里进行了一项实验,发现切换到新的渲染引擎可以缩短应用程序的总启动时间,同时还可以提高启动动画的帧速和用户体验。

 

除了新的基于核心动画(Core Animation)的渲染引擎外,Lottie 4.0 还带来了一种新的文件格式,它使用压缩将一个或多个 Lottie JSON 文件及其相关资源聚合到一个文件中。JSON 解码管道已被重写,速度提高了约 2 倍。

 

Lottie 最初是用 Objective-C 编写的,两年前在 Swift 中被完全重写,最终发布了第 3 版。你可以从GitHub repo或使用包管理器(如 CocoaPods、Carthage 或 Swift 包管理器)安装它。

 

作者简介:

Sergio De Simone 是一名软件工程师。Sergio 已经在一系列不同的项目和公司担任软件工程师超过 15 年,其中包括西门子、惠普和小型创业公司等不同的工作环境。在过去的几年里,他一直专注于移动平台和相关技术的开发。他目前就职于 BigML,Inc.,负责 iOS 和 OS X 的开发。

 

原文链接:

https://www.infoq.com/news/2022/12/airbnb-lottie-4/


相关阅读:

React 源码解读之 React Fiber

虚拟角色赛道的新“闯入者”:3D 引擎 Cocos 和它的新故事

2022-12-29 08:0010012

评论

发布
暂无评论
发现更多内容

奈学教你五分钟学会分布式事务

奈学教育

分布式系统

缓存一致性协议的工作方式

HackMSF

缓存 并发

当代社畜在维权中成长 | 记初次打官司

张鸱鸺

个人成长 随笔杂谈 维权 民事诉讼

线上故障处理实践

心平气和

故障分析 故障定位

test

PQY

Spark Launcher Java API提交Spark算法

杨仪军

spark spark launcher

UML统一建模语言

哼哼

C/C++:const常量真的可以用指针修改吗

韩小非

c c++ 指针 常量 编译器优化

B端产品经理养成记(3):访谈

涛哥 数字产品和业务架构

产品经理

Backend Roadmap

陈皮

Backend Developer

对文化的态度,早在日常中

zhoo299

历史 随笔 文化

现在的我们想要获得成功,除了付出努力之外,还要具备见识。

叶小鍵

中小型城市商业银行数字化转型实践(四)业务中台建设思路和路径

泡菜小仙

行业资讯 银行数字化转型

话说 Java vs C#

申扬科技

游戏夜读 | 核心能力是什么?

game1night

npm常用命令

阡陌r

Vue

愿你也能穿越熊熊烈火,飞往你的山

Janenesome

读书笔记 思考

【摘】Git-从零单排 03期

卡尔

git 效率工具 工具链

产品周刊 | 第 18 期(20200607)

八味阁

产品 产品经理 产品设计 产品推荐

初识 Docker 与安装 | Docker 系列

AlwaysBeta

Docker

推荐几款有意思的小众App(06.06)

静陌

游戏夜读 | 终端设备之争?

game1night

听说用 Lombok 可以早点下班?

武培轩

Java 程序员 工具 后端 IDEA

内存屏障的来历

HackMSF

cpu 并发

做正确的事情什么时候都不晚

Neco.W

学习 导师

练习--食堂就餐卡系统技术方案设计

jason

「翻译」测试用例最佳实践

HackMSF

翻译 单元测试

新媒体小编一年工作心得

彭宏豪95

职场 感悟 工作

Trie 字典树

田镇珲

LeetCode Trie

食堂就餐卡系统设计

我是这样给同事分析幂等性问题的

架构精进之路

幂等性 服务设计

AirBnb开源动画引擎Lottie:采用Core Animation提高性能_语言 & 开发_Sergio De Simone_InfoQ精选文章