HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论

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

使用 nginx 配置项的好习惯

liuzhen007

nginx 5月月更

融云 x Zervo:打造欧美 Z 世代社交的「主题幻想世界」

融云 RongCloud

架构实战营模块一作业

融冰

网站开发进阶(七十一):css伪元素::before和::after用法详解

No Silver Bullet

css3 5月月更 伪元素 伪类

极狐GitLab yum/apt repo正式开放,更顺畅的极狐GitLab安装升级体验

极狐GitLab

极狐GitLab 安装源

C语言打印程序行号、日期方便调试程序

DS小龙哥

5月月更

有了这10个GitHub仓库,开发者如同buff加持

华为云开发者联盟

GitHub 开源 Web 软件开发

7件大事回顾加密史上最疯狂一周

CECBC

揭秘华为云GaussDB(for Influx):数据直方图

华为云开发者联盟

数据库 华为云 GaussDB(for Influx) 数据直方图 直方图

FFmpeg安装

Loken

音视频

druid源码学习七

Nick

MAE自监督算法介绍和基于EasyCV的复现

阿里云大数据AI技术

深度学习 算法 自监督学习

架构训练营第一次作业

地下地上

直播预告丨OpenHarmony标准系统多媒体子系统之视频解读

OpenHarmony开发者

OpenHarmony 多媒体

Go 语言入门很简单:AES加密和解密

宇宙之一粟

AES Go 语言 5月月更

ffmpeg封装格式转换

Loken

音视频 5月月更

springboot启动失败的问题('hibernate.dialect' not set)

程序员欣宸

Java 5月月更

你说写代码,最常用的3个设计模式是啥?

小傅哥

设计模式 小傅哥 架构设计 代码优化 设计原则

探索开源工作流引擎Azkaban在MRS中的实践

华为云开发者联盟

开源 MRS Azkaban 开源工作流引擎

浅谈 Fiori Fundamentals 和 SAP UI5 Web Components 的关系

汪子熙

前端开发 UI SAP Fiori 5月月更

5.17电信日 | 融云积极消除数字鸿沟 助力打造数字化新基建

融云 RongCloud

设计模式之观察者模式

乌龟哥哥

5月月更

区块链有什么价值?

CECBC

Wallys-AR9582 /2x2 MIMO /Industrial-grade/ 902-928Mhz

wallys-wifi6

苹果 AppStore 财年和账单那些趣事

37手游iOS技术运营团队

apple appstore App生态

Druid连接池源码阅读07

石小天

比特币跌破27000美元!币圈大佬损失惨重,最高身价缩水近9成

CECBC

【C 语言】指针 Three 之 [赋值语句的方法、指针变量的大小、上述总结、 * 和 & 认识、对解引用(*)认识]

謓泽

5月月更

听说你在写Python爬虫,你对浏览器的开发者工具了解多少?【多图预警】

梦想橡皮擦

5月月更

WorkPlus IM即时通讯:快速集成、私有化部署、安全加密

WorkPlus

Apache Kafka 分层存储(Tiered Storage)技术解析

移动云大数据

kafka

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