AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

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

评论

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

架构实战营 - 第 6 期 模块七课后作业

乐邦

「架构实战营」

自动驾驶等级家喻户晓,小微企业宽带等级你知道吗?

脑极体

Docker实践经验(二)镜像的构建、镜像仓库、压缩、导入

看,未来

图解 DevOps

看,未来

“Docker 实践经验” 系列导航

看,未来

云原生

不改一行代码,将微信小程序生成商用App可行吗?

Speedoooo

微信小程序 APP开发 小程序转app 用户留存

CopyOnWriteArrayList 源码分析-删除

zarmnosaj

5月月更

未来已来:云原生时代(二)云计算发展现状调研

看,未来

云原生

Spring之 @Component和@ComponentScan注解用法介绍和注意事项

echoes

Docker 实践经验(一)简介、安装与实操

看,未来

云原生

Docker 实践经验(三):Docker 容器数据卷

看,未来

OneFlow最新版本登陆矩池云,快来体验吧

OneFlow

存储厂商旌存半导体加入龙蜥社区

OpenAnolis小助手

芯片 龙蜥社区 CLA 旌存半导体

最好用的 6 款 Vue 实时消息提示通知(Message/Notification)组件推荐与测评

蒋川

JavaScript Vue 组件 低代码平台 消息提示通知

面向高校 | “云原生技术应用与实践”示范课程项目开放申报

阿里巴巴云原生

阿里云 云原生 云原生课程

未来已来:云原生时代(一)云计算如何一步步走来?

看,未来

Docker实践经验(四)docker 上部署 mysql8 主从复制

看,未来

Docker 实践经验(五)docker上部署 redis 三主三从集群

看,未来

云原生

战码先锋直播预告丨参与ArkUI,共建OpenHarmony繁荣生态

OpenHarmony开发者

Open Harmony

Vue3 Typescript + Axios 全栈开发教程:手把手教你写「待办清单」APP

蒋川

typescript 低代码 Vue3 axios 全栈开发

A8hash哈希竞猜娱乐游戏开发(源码搭建)

开发微hkkf5566

开箱即用!Linux 内核首个原生支持,让你的容器体验飞起来!| 龙蜥技术

OpenAnolis小助手

Linux 容器化 内核 高性能存储 龙蜥技术

docker之搭建zookeeper和kafka集群

echoes

Spring Boot系列(一)

DC.夜猫

Java Spring Boot Spring Boot 2

「开源人的福音」一键部署Java构件到Sonatype

Jianmu

后端 持续集成 开源项目 部署 Java构件

11年程序员给本科、研究生应届生以及准备从事后台开发同学的建议,学习进阶之路

C++后台开发

后台开发 社招 应届生 Linux服务器开发 校招

一次软件的可靠性测试实践

PingCode研发中心

软件测试 开发 PingCode 软件可靠性

K8s 网关选型初判:Nginx 还是 Envoy?

阿里巴巴云原生

阿里云 容器 微服务 云原生 网关

国产ETL数据仓库调度平台TASKCTL对于Kettle作业类型的转换使用

敏捷调度TASKCTL

DevOps 数据仓库 kettle ETL 自动化运维

Docker 实践经验(六):Docker 网络

看,未来

云原生

哈希Hash竞猜游戏系统规则开发

薇電13242772558

区块链 哈希值

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