AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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:0010440

评论

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

奈学:一起了解几种序列化协议

古月木易

序列化 序列化协议

最右JS2Flutter框架——通信机制(三)

刘剑

flutter 大前端 探索与实践

不仅性能秒杀Hadoop,现在连分布式集群功能也开源了

爱倒腾的程序员

大数据 涛思数据 tdengine 物联网 时序数据库

设计一个秒杀系统挑战和问题及方案或思路

Young

架构师训练营第九章作业

吴吴

秒杀系统

Z冰红茶

零/低代码编程风口已到,请快快上车!

代码制造者

编程语言 低代码 零代码 iVX

垃圾回收&秒杀设计

dony.zhang

垃圾回收

week9作业1

凭实力蝉联第一!Flink 又双叒叕上榜啦

Apache Flink

flink

第九周.命题作业-GC原理

刘璐

地方政府争夺数字货币试点,互联网巨头参与测试,央行数字货币即将来临

CECBC

行业资讯 央行数字货币

高教授:区块链软硬件相结合能提升系统性能 也能保持一定的灵活性

CECBC

分布式 行业资讯 区块链技术 落地应用

cxuan读者的外包面试之旅

苹果看辽宁体育

Java 面试 程序人生

一文带你掌握OBS的两种常见的鉴权方式

华为云开发者联盟

Rest OBS 鉴权 Header携带签名 URL携带签名

开源、云、传统IT的三国杀

郭华

云计算 开源 商业 IT

作业一

Kiroro

数据库实践丨MySQL多表join分析

华为云开发者联盟

MySQL 数据库 华为云 join 多表join

【得物技术】流量之战—性能优化三十六计

得物技术

Java 流量 得物技术部 商品 电商平台

week09 总结

Z冰红茶

架构师0期Week9作业1

Nan Jiang

架构师训练营第8周总结

Hanson

JVM类加载与执行

superman

JVM 类加载

埋点全解析,你最关心的可视化埋点在这里!(文末附开源地址)

易观大数据

总结

Kiroro

白鹭引擎助力《梦幻西游网页版》刷新h5游戏新高度

DT极客

为什么你总觉得自己是对的?

池建强

个人成长

vivo,此去灵台方寸山

脑极体

阿里最“短命”的P10?入职不到3周,钉钉副总裁张志琦因个人原因离职

程序员生活志

阿里巴巴 互联网热点

加快速度推进区块链融合发展

CECBC

区块链 行业资讯 产业落地

架构师训练营第8周作业

Hanson

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