写点什么

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

评论

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

峰会实录 | 镜舟科技CEO孙文现:基于StarRocks打造企业级极速统一数据分析产品

StarRocks

数据库·

双机热备软件哪家好?有哪些功能?咨询电话多少?

行云管家

高可用 热备 双机热备

大数据中,LED显示屏行业的两大服务和四大功能

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

开源的YAPI外还有哪些免费的接口工具?

Liam

开源 YAPI 接口工具 免费

面试还不懂JVM调优,看这篇文章就够了!

Java全栈架构师

程序员 性能优化 JVM java面试 jvm调优

【杭州专场】蚂蚁单测自动生成产品体验活动招募开启

TRaaS

实践一年之久,vivo 如何基于 APISIX 进行业务基础架构的演进

API7.ai 技术团队

开源 云原生 API网关 APISIX 客户案例

CAP/BASE

苏格拉格拉

分布式 CAP Base

集合管道模式(上)

冰心的小屋

集成管道模式 pipline

Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)

A-刘晨阳

Linux 运维 GCC 11月月更 gcc5.4

还不会日志异常检测?看完这篇文章就够了!

云智慧AIOps社区

人工智能 机器学习 大数据 日志分析 异常日志

探讨:2023 年 WEB 3 的 5 大趋势

开发微hkkf5566

如何通过Java 在 Word 中更改字体颜色

Geek_249eec

word java;

【11.04-11.11】写作社区优秀技术博文回顾

InfoQ写作社区官方

热门活动

分布式数据库九大发展趋势|文末附完整报告下载

OceanBase 数据库

用技术为内容注入生命力,华为视频持续升级影音体验

科技汇

React-Native 开发实用指南

环信

前端 开发 React Native Android;

保定有几家等保测评机构?咨询电话多少?

行云管家

等保测评 等级测评 等保测评机构 保定

久等了,青年技术沙龙北京发车!

小红书技术REDtech

鸿蒙生态汇聚200万+开发者,金山办公、京东分享高效开发新体验

叶落便知秋

TDSQL-C真·秒级启停:连接断了,又没断

腾讯云数据库

数据库 腾讯云 TDSQL-C 腾讯云数据库

性能测试岗位能力模型

老张

性能测试 胜任力模型

大数据培训后就业前景和方向

小谷哥

SpringCloudAlibaba 微服务组件 Nacos 之配置中心源码深度解析

程序员小毕

微服务 后端 nacos 架构师 java面试

Centos7 gcc4.8.5升级到版本gcc5.4.0

A-刘晨阳

Linux 运维 11月月更 gcc5.4

Web3.0 中的去中心化身份

开发微hkkf5566

科普|渲染农场与超级计算机有什么不同?

Finovy Cloud

人工智能 深度学习 图像处理 云渲染 渲染农场

深入理解数组的slice方法

好程序员IT教育

JavaScript 数组 slice

华为全联接大会2022丨华为云打造可信认证体系,加速开发者成长

华为云开发者联盟

云计算 后端 华为云 企业号十月 PK 榜

Apache ShenYu 集成 RocketMQ 实时采集海量日志的实践

Apache RocketMQ

RocketMQ 消息队列 Apache ShenYu

计算机网络:随机访问介质访问控制之CSMA/CA协议

timerring

计算机网络 11月月更 CSMA CSMA/CA

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