他就是大名鼎鼎的 Lottie。俗称「老铁」 五分钟后,我就给这位同学写了一个 动画 demo。...Lottie 是 Airbnb 开发的一款能够为几乎所有的客户端添加动画效果的开源工具,目前我已经在 iOS、Android、RN、小程序、web 上都使用过 Lottie 来添加我的动画。...除此之外,蚂蚁设计团队还给我们提供了一个 Lottie 动画在线设计工具:犸良动画平台。...第二步:找到对应的 npm 包 此处以 React 为例,我们在 npm 上找到一个名为 react-lottie 的包,引入到你的项目中,结合刚才得到的 JSON 动画源文件,就可以快速实现了。...demo 代码如下: import React, { useState } from 'react'; import Lottie from 'react-lottie' import * as animateData
Lottie 是一个用于 iOS 和 Android 的库,可以实时渲染 After Effects 动画。...在 Lottie 4.0 中,AirBnb 放弃了使用 CADisplayLink 在主 CPU 线程上制作图形动画的原始方法: 每帧一次,Lottie 将在主线程上执行代码,以推进动画的进度并重新渲染其内容...这意味着动画在播放时将消耗 5–20% 以上的 CPU,从而减少了用于应用程序其余部分的可用 CPU 周期。...切换到核心动画(Core Animation)意味着动画被卸载到 GPU 上,这有三个好处:利用硬件加速,减少 CPU 负载,并在 CPU 繁忙时提高帧速。...除了新的基于核心动画(Core Animation)的渲染引擎外,Lottie 4.0 还带来了一种新的文件格式,它使用压缩将一个或多个 Lottie JSON 文件及其相关资源聚合到一个文件中。
npm i lottie-web 请注意,有一个替代的Lottie包可用,称为react-lottie,但是它在底层使用Lottie-web,可以方便地直接使用,稍后你将看到这一点。...在这个对象上,我们需要提供的第一件事是容器,也就是我们想要在其中运行动画的DOM节点。...Hello World ); } 有了这个容器,我们只需要在一个名为animationData的属性上提供...Hello World ); } 之后你应该会看到动画自动运行: 如果你有和我一样的代码,并让你的动画在一个空...添加 Lottie Light 版本 最后,我要提到的关于Lottie的最后一点是Lottie-web是一个相当大的依赖性。
如有疑问,可以看看阮一峰老师的博客:CSS动画简介,或者到MDN上查看相关的文档。...在做这个需求之前,我一直认为动图和视频的实现原理应该是差不多的,所以同样效果的动图和视频应该大小上也差不多。但实际上,导出视频的大小会比导出动图的大小要小很多,后面在实现小男孩动画时候我会讲到。...相比动图和视频的实现方法,用lottie实现动画十分轻量,因为lottie只需要加载一个json文件,和其他必要的图片就可以了。...所以这里我用到了lottie来实现,发现lottie确实能够很好地这个效果,而且总文件大小也比较小,只需要479KB,如果用动图或者视频,一般来说没有1M以上搞不定。 ?...可以看到lottie丢失了一些倾斜度、渐变,颜色也不太对。所以果断放弃了lottie方案。 那么这里还可以用video或者动图来实现。导出apng之后,大小是惊人的28M,这谁顶得住啊,告辞!?。
Lottie的使用的资源是需要先通过bodymovin( bodymovin 插件本身是用于网页上呈现各种AE效果的一个开源库)将 Adobe After Effects (AE)生成的aep动画工程文件转换为通用的...Lottie则负责解析动画的数据,计算每个动画在某个时间点的状态,准确地绘制到屏幕上。...LottieComposition 负责解析json描述文件,把json内容转成Java数据对象;LottieDrawable负责绘制,把LottieComposition转成的数据对象绘制成drawable显示到View上。...动画在未开启硬件加速的情况下,帧率、内存,CPU都比属性动画差,开启硬件加速后,性能差不多。...实现时,根据当前时间,在canvas上歌词绘制出来,最终再和声音融合在一起生成一个MV视频,这里就导致动画不能特别复杂,并且有一定的规律。
如果全部让程序员用代码生成,可能发费的时间就很多了,并且有些动效是很难做出来的,比如超出了API支持的动画效果。你可以使用GIF。...简单来说,就是可以直接利用 AE 导出的 JSON 动画文件,将其解析为原生代码,并跨平台运行在设备上。...通过插件 Bodymovin,Lottie 可以直接解析 AE 导出的 JSON 文件,并且插件内置的 JavaScript 图层可以将动画直接在 Web 上运行。...我们的目标就是尽可能准确地实现 AE 制作出来的动画,Lottie 提供的示例 App 将会向大家展示如何利用 AE 和 JSON 文件快速、灵活且精确地实现动效。...Facebook 为专注于响应式布局,只选择支持了少数 AE 动效,Lottie 则打算尽可能多的实现效果本身。
有时候,一些动画在web端支持,但在iOS和Android上却不被支持。 ? 使用技巧及建议 为web创建动画并不像传统视频动画那样,我们需要考虑几个我们从未考虑过的设置和格式选项。...下面是Lottie的作者给出的一些建议 保持简单:JSON文件应该尽可能的简洁和保持小的体积 利用好AE的能力尽可能的减少额外的关键帧,例如多使用子父级方式而不是在每一个层上都添加一遍关键帧 避免使用路径关键帧...,因为它们会创建一个非常大的文档,会从路径上转换所有的顶点 避免使用Wiggle表达式和自动追踪等技术,这些技术会产生大量的关键帧,做出这么大的文件可能会使用JSON文件变得非常大,从而对性能产生大的负面影响...导出文件时,以1倍图导出,图形上的每个像素都将转换成iOS和Android的点单位。...Lottie还不支持任何表达式或效果。 蒙版或者alpha蒙版应该尽可能的小,它们的大小将影响Lottie的性能,所以最好避免出现它们或保持它们最小。 混合模式,如叠加,屏幕,相加还不支持。
【一、前言Lottie简介与使用】 1、Lottie简介 Lottie是Airbnb开源的跨平台动画库,支持iOS、Android、React Native 和 Web 等平台。...动效设计人员在Adobe After Effects中设计动画; (2)....动效设计人员通过Adobe After Effects的Bodymovin插件导出记录动画信息的JSON文件; (3). 开发人员使用Lottie的开源库读取这份JSON文件进行解析和渲染。 ?...Lottie的读取这些数据,然后绘制到屏幕上。 首先要解析json,建立数据到对象的映射,然后根据数据对象创建合适的Drawable绘制到view上,动画的实现可以通过操作读取到的元素完成。...【参考】 Lottie 官方文档:http://airbnb.io/lottie/ Lottie Github:https://github.com/airbnb/lottie-android https
近几年,业界诞生了像Lottie、SVGA这样的动效工作流解决方案,Lottie 最早从 UI 动画场景出发解决矢量动效渲染的问题,从官方社区来看,我们能容易发现 Lottie 的矢量基因,社区作品大多是矢量图形类动效...SVGA 是 YY 直播的开发工程师 2017 年发布的一套跨平台动效解决方案,诞生于直播场景,SVGA 不支持复杂矢量图形动效,对位图动效的支持超过 Lottie,其最初的目标是为了改善和弥补 Lottie...,并且还能够批量化生产素材,从流程上直接取代传统小工作坊形式,利用工业化生产方式大幅提升设计和研发效率。...经过一系列的压缩策略,导出相同的 AE 动效内容,在文件解码速度和压缩率上均大幅领先于同类型方案。采用可扩展的二进制文件格式,可单文件集成包含图片、音频等任意设计资源。...每个图层又提供了起始时间的调整能力,支持自由设置在时间轴上的相对位置,能够灵活适配用户视频的时长。?经过这些改造,新的接口不仅满足了UI动画的编辑性需求,还满足了视频后编辑模板类的需求。
这里介绍十款AE上不容错过的精品插件。...能够将AE中矢量图形做成的动效导成json文件,变成一串纯粹的代码,再被Lottie渲染还原出来。...(在“Bodymovin”选中需要导出的合成,点击“Render”渲染导出即可) QQ最新的Q弹超清表情,就是用Lottie实现的,大家可以在手机QQ上亲自体验这种爽滑Q弹的感觉哦。...播放型动效有以下几种比较常见的输出格式: Gif、Apng、Webp本质上都是将位图进行压缩和转换,而Lottie则是基于代码层面的动画渲染,PAG则结合了两者的特性。...目前一般使用Apng、Lottie、和PAG就已经可以覆盖大部分的输出场景,是可以优先考虑的动图格式。
Lottie动画简介 Lottie是一个用于Web和iOS(Android)的移动库,用于解析使用Bodymovin导出为json的Adobe After Effects动画,并在移动设备上呈现它们。...参考文献 《Lottie官网》 http://airbnb.io/lottie/#/ 《Lottie-Web开源GitHub》 https://github.com/airbnb/lottie-web...(只要和设计师提前商量好注意事项就不会有大问题) 更具体的大家可以参考下面这篇研究文章 参考资料 《生产环境中的动效落地之插件-lottie》https://www.jianshu.com/p/ad45c660fded...Lottie兼容性 这个分两部分讲 IOS/Android兼容性 Web端兼容性 IOS/Android兼容性 总体来看让人比较满意 具体的参数和数据,可阅览: 《生产环境中的动效落地之插件...(最后导出的时候要点击绿色的render按钮才能导出,不要点那个player按钮),如果能把render这个文案改成export(导出),语意上就更好理解一些了 lottie-web的使用需要手动处理跨域问题
Lottie 的使用流程很简单,就是在AE中设计完成你的动画后,通过bodymoving插件导出一份记录动画信息的JSON文件,然后开发人员使用 Lottie 的Android,iOS,React Native...先来看几张动图吧~ 效果是不是很赞,相比于我们用代码去实现这些复杂的动画,简直就是前端程序员的福音。 那如何去看待 Airbnb 的 lottie 呢!...我搜罗了来自知乎的一些答案: 优点 从代码上看,Android 端的实现是基于 Drawable、iOS 端是基于 Layer —— 最终都是对 canvas 的操作,中间除去解析 json 外,基本无耗费性能的行为...(官方文档有提到,masks 和 mattes 动画较为耗费性能,原因是需要额外的 Bitmap 辅助,这点需注意) 而存储上,动画由 json 文件描述,占用空间不多。...根本没法开开心心提PR; 如何使用Lottie Lottie支持iOS 8及以上版本。 Lottie动画可以通过JSON 文件或从URL地址加载。
如下图: image.png 官网宣传了3个特性: 灵活使用AE的特性 随心所欲控制你的动画 很小的文件体积 个人认为 lottie 最大的优势就是可以将设计师设计的动图原原本本的在页面上展现出来,完美还原了动画的精细度...目前所有使用 gif 或 apng 的场景应该都可以使用 lottie,当然 lottie 不局限与此场景。...Merge Paths Layer Effects Text image.png *设计过程中的优化建议和注意事项 General tips & guidelines 尽量保持简单小巧 在相同的图层上复制相同的关键帧会增加额外的代码...Luma mattes 不支持图层样式 图层效果不支持drop shadow, color overlay 或 stroke 全屏动画,导出比最大屏幕宽度更宽一点的图像,在 Android 和 iOS 上可以分别裁切...引用 npm i -S lottie-web import lottie from 'lottie-web' 调用 loadAnimation() const myLottie = lottie.loadAnimation
顺藤摸瓜就找到今天的主角:lottie-web 开源动画库 ---- 进入正文… Lottie 动画库 官方文档 它也是机缘巧合下找到的。...Web 上本地呈现它们!...官方logo动图 上面的动画是在 After Effects 中创建的,可以通过一个简单的 json 文件在所有平台上本地渲染。...视频教程 入门 Bodymovin 可以在网络上呈现 Lottie JSON 文件。 首先,获取 bodymovin 播放器 javascript 库。...在这一点上确实蛮省事的感觉。 我坦白,自从进入"代码吸猫"征文活动群来,我做的最多的不是想着写啥,而是收刮表情包,群里的掘友猫咪是真的太好看拉。
图1 Lottie工作流程图 rLottie 与 lottie 工作流一致,在 SDK 上实现不一样,rLottie 没有使用平台特定实现,是统一 C++实现。...1.2 SVGA 工作流程 SVGA 流程如图 2 所示,大体流程与 Lottie 类似,使用 SVGAConverter 插件导出,文件是 PB 序列化以后 zip 压缩的格式,在具体实现上通过设置帧率来生成一个配置文件...时间静态区间 分析动画文件的特效,我们发现大部分的动画素材实际上并不是整个时间轴上都在变化,或多或少会存在一些画面静止的区间。...而 PAG 在刷新时,如果遇到这些静态区间,会直接返回上一帧的动画内容,自动跳过任何重复的绘制。...另一方面,由于相同的动画在 AE 中有很多实现方式,但性能却千差万别。
以前大部分项目底部导航栏关于图片部分的实现,要么两套图 selector 切换,要么通过着色器 tint 进行渲染,总之最后呈现的效果便是在点击时两张图静态切换,说 Low 吧,也还凑合,但是总是没那么高大上。...项目重构时,韩总说了,之前的方式呈现的效果太 Low 了,这次重构要求底部要动。(内心默默来句,你咋不上天。) 先来看个两者间对比效果吧~ 效果对比 原有两张静态图切换: ? 小动画浪起来: ?...Lottie 对于这个东东,不知道说啥。忽略吧。 想起来都是累,韩总让我自己折腾 Lottie json 文件。...那么我直接缓存上一此点击 MenuItem 然后修改状态不就好了嘛。 tint 着色器修改? 整整折腾了好久,折腾到韩总说,不行咱就放弃吧。 想想鸡老大,怎能轻易放弃?...apply { playAnimation() } // 这里判断如果当前点击的和上一次点击索引不同,则将上一次点击索引位置的 MenuItem Icon 替换
最终实现了相同动效内容只有 Lottie 一半左右的导出大小,而且解码平均还快 12 倍。...PAG 的 1.0 版本可以总结为我们实现了一个全方位更好的 Lottie,在功能跟它对齐的情况下,性能,文件大小和使用场景上都全面更有优势。...PAG 的技术挑战 挑战一:动效文件如何压缩到仅 Lottie 一半左右大小? 一个 AE 动效文件通常是这样层层包含的树状结构,其中时间轴属性是 AE 动效的最基本单元。...这里是一些 PAG 和 Lottie 的动效文件大小的对比数据,两者都进行了 zip 压缩之后再进行对比,可以看到相同的动效内容平均 PAG 只有 Lottie 文件的 56%大小。...Lottie 的方案到今天都只支持纯矢量的导出方式。矢量导出方式优势就是文件极小,并且可以运行时编辑动效的内容。
Intro to Lottie Lottie 是 Airbnb 开源的一个支持 Web、Android、iOS 以及 ReactNative等平台的动画库,它可以结合 AE 和 Bodymovin 来快速实现跨平台动画...其实对于普通的动效和简单动画, 使用原生代码实现已经足够, Lottie 是为了复杂动画而生的, 下面来看几个 Lottie 实现的几个动画例子: ?...要使用 Lottie, 需要在借助 Bodymovin 插件将动画工程文件从 AE 中导出成 JSON。Lottie 分别为每个平台实现了一套 Player, 只需载入JSON动画文件就可播放。...值得一提的是, Lottie 在 Web 上是借助 Canvas 或者 SVG 来渲染动画的, 动画的关键帧在导出时已经被计算好了, 除了解析JSON之外基本没有性能损耗, 因此效率非常高! 二....因为目前的位移属性实际上是集合和X轴位移和Y轴位移两个属性的, 从曲线也能反映出来, 下面那条平行于X轴的直线表示X轴位移。
Lottie 是什么?...&iOS上以 native 代码渲染出来,目前还支持了 RN 平台。...Lottie 关键类介绍 Lottie 提供了一个 LottieAnimationView 给用户使用,而实际 Lottie 的核心是 LottieDrawable,它承载了所有的绘制工作,LottieAnimationView...Lottie的动画原理 上一小节讲了 Lottie 的绘制原理,但是 Lottie 是用来做动画的,光理解它的绘制原理是不够的,对于动画,更重要的是它怎么动起来的。...,所以现在做动效考验的是设计同学的设计能力了,哈哈。
导语 本文主要挖掘、弄懂lottie动画背后的原理。lottie动画是如何让30FPS流畅运行?...然后加载lottie库和下面几行代码就可以实现一个lottie动画。...上面动画之所以一直动,是lottie库可以设置loop循环播放。 3、lottie是如何让30FPS流畅运行?...后面我发现了是因为requestAnimationFrame渲染每一帧的间隔时间都是不固定的(上一帧的时间间隔是16ms,下一帧的间隔可能17ms),如果只是这样均分是不合理。...lottie库也能实现流畅的动画。
领取专属 10元无门槛券
手把手带您无忧上云