首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

lottie系列文章(二):lottie最佳实践

,在当前停止并保持 animation.goToAndStop(value, isFrame); // 跳到某个时刻/并停止。...在unmount的时候,需要调用该方法 lottie-web常用的事件 我们在lottie-web中可能也需要监听一些事件,比如加载完动画json文件的data_ready事件。...,下面还有一些其他常用的事件可以监听: * complete: 播放完成(循环播放下不会触发) * loopComplete: 当前循环下播放(循环播放/非循环播放)结束触发 * enterFrame...: 每进入一就会触发,播放每一都会触发一次,stop方法也会触发 * segmentStart: 播放指定片段触发,playSegments、resetSegments等方法刚开始播放指定片段时会发出...* data_ready: 动画json文件加载完毕触发 * DOMLoaded: 动画相关的dom已经被添加到html后触发 * destroy: 将在动画删除触发 lottie-web部分高阶用法

5.3K31

lottie谁是lottie?

(value, isFrame);跳到某个时刻/并停止。...isFrame(默认 false)指示 value 表示还是时间(毫秒) goToAndPlay animation.goToAndPlay(value, isFrame);跳到某个时刻/并进行播放...在 unmount 的时候,需要调用该方法 监听事件: 名称 描述 data_ready 加载完 json 动画 complete 播放完成(循环播放下不会触发) loopComplete 当前循环下播放...(循环播放/非循环播放)结束触发 enterFrame 每进入一就会触发,播放每一都会触发一次,stop 方法也会触发 segmentStart 每进入一就会触发,播放每一都会触发一次,stop...方法也会触发 DOMLoaded 动画相关的 dom 已经被添加到 html 后触发 destroy 将在动画删除触发 Lottie 动画性能 对比 Lottie 和 Gif 动画,数据显示

34020
您找到你想要的搜索结果了吗?
是的
没有找到

lottie系列文章(一):lottie介绍

目前辅导的动画较少,实现方式一般是: 前端实现svg动画(实现成本较高、维护成本高、容易有买家秀/卖家秀区别、客户端不能复用); 设计师切gif(文件较大、容易有锯齿); png序列(文件较大、容易有锯齿...play: 播放动画 stop: 停止播放动画 pause: 暂停动画 goToAndStop: 跳到某一动画,并停止 setDirection: 设置播放方向 setSpeed: 设置播放速度 才外...,lottie-web也提供了一系列的事件,例如: onComplete: 动画播放完成触发 onLoopComplete: 当前循环播放完成触发 onEnterFrame: 播放一动画的时候触发 onSegmentStart...: 开始播放一个动画片段的时候触发 总体而言,lottie-web目前提供了丰富的方法和事件,基本可以满足对动画进行控制的需求。...将该动画通过bodymovin插件导出的json,会如以下格式: { "fr": 30, // 帧率 "ip": 0, // 起始关键 "op": 20, // 结束关键

4.4K32

复杂动画之移动端video采坑实现

在企鹅辅导品牌页中,我们需要实现一个动画如下: 页面滚动到动画区域,播放动画, 对应动画部分如下: 动画当前的实现有以下几种方式: GIF 动画 大家比较熟悉的图片格式 lottie(http:...视频播放是监听 scroll 事件,等到可视范围内调用 video.play() 自动播放,既然有些浏览器需要用户交互,那可以选择 touch 事件,当用户 touch 到这块展示播放区域,触发 touch...这里使用变量来表示视频是否已经播放,如果已经播放就不再执行 touch 事件,避免频繁调用 play 有些安卓浏览器无法自动播放,touch 事件也无法触发播放 video 标签的 play 方法返回一个...catch 到 error ,只能启用兼容方案,设计小哥哥给了我几张图片,让我渐隐渐现实现图片播放。...对于 video 的自动播放,考虑一些浏览器限制必须通过用户交互才能使用,如果视屏是在第一屏则有点难度,还是需要用户通过点击才能播放,如果不是第一屏则可通过 touch 事件触发,毕竟用户下拉滚动还是会触发

2.3K10

复杂动画之移动端video采坑实现

在企鹅辅导品牌页中,我们需要实现一个动画如下: 页面滚动到动画区域,播放动画, 对应动画部分如下: 动画当前的实现有以下几种方式: GIF 动画 大家比较熟悉的图片格式 lottie Airbnb...可以看到实现还是存在着差异,颜色、数字倾斜度、虚线的透视都没有达到预期,于是放弃lottie 的使用,但这并不否定 lottie 在实现其它动画的优秀效果 APNG 在对设计师给到的分段的动画图片压缩之后...这里使用变量来表示视频是否已经播放,如果已经播放就不再执行 touch 事件,避免频繁调用 play 有些安卓浏览器无法自动播放,touch 事件也无法触发播放 video 标签的 play 方法返回一个...catch 到 error ,只能启用兼容方案,设计小哥哥给了我几张图片,让我渐隐渐现实现图片播放。...对于 video 的自动播放,考虑一些浏览器限制必须通过用户交互才能使用,如果视屏是在第一屏则有点难度,还是需要用户通过点击才能播放,如果不是第一屏则可通过 touch 事件触发,毕竟用户下拉滚动还是会触发

2.3K10

React: Lottie 动画初体验和优化策略

3、为什么选择 LOTTIE 动画,比较同样类型和选择 同样类型的复杂动画实现的方案现在有如下几个 png 序列: 优点:兼容性好,工程师可控,操作性强 缺点:它需要大量图片素材支持,动画播放占用的内存较多...缺点:部分手机掉非常严重,体验不流畅,严重影响用户体验 lottie 动画就解决了这一问题:Lottie 只需要解析导出的 JSON 文件及所需要的图片,就能在各个平台上实现相同的动画效果,它实现成本低...}; export default Example; 复制代码 实现比较简单 6、优化策略 1、监控用户滑动事件,按页加载当前动画 2、设计师侧优化(减少动画帧数,和动画数量) 3、虚拟 DOM...或者 viewport ),或者两个元素的相交部分大小发生变化时,该回调方法会被触发执行。...解决了资源懒加载——图片滚动到可见才进行加载 import { useInView } from 'react-intersection-observer'; import Lottie from

3.8K40

Lottie-页面动画100%硬核还原

它就是今天的主角:Lottie Lottie简介 Lottie 是Airbnb开源的一个 面向iOS、Android、React Native 的动画库,能分析 AE 导出的动画(需要用bodymovin...下面是Lottie提供的官方效果图。类似下面这种一段动画的播放,非常适合使用Lottie来做。 Lottie流程 我们先来看下整个流程简图。...设置渲染器 Lottie动画监听 Lottie提供了用于监听动画执行情况的事件: complete loopComplete enterFrame segmentStart config_ready(初始配置完成...) data_ready(所有动画数据加载完成) DOMLoaded(元素已添加到DOM节点) destroy 可使用addEventListener监听事件 // 动画播放完成触发 anm.addEventListener...('complete', anmLoaded); // 当前循环播放完成触发 anm.addEventListener('loopComplete', anmComplete); // 播放一动画的时候触发

1K40

动画菜鸡的自我救赎之企鹅辅导品牌页开发总结

一般来说,品牌介绍页都是少不了各种动画的。这里我列出了辅导品牌页的三个主要的动画,后面我会讲我的实现 隧道动画: ? 页面滑动到隧道位置的时候,会触发隧道动画的自动播放。...隧道动画与右边滑动动画要保持一致,隧道最后一节起来之后,在隧道口展开出一条路。 教研团队代表动画: ? 这里主要展示9位企鹅辅导教研团队的教师代表。...AI教学动画 ? 页面滑动到AI教学模块时候触发AI模块动画的自动播放。可以看到有四部分的动画:上面数字的变化,下面的小男孩动画、轴动画以及文字的动画。...右边的tab是跟着隧道一起运动的,lottie可以监听进入每一事件,在每一里,可以根据隧道当前播放的位置,确定右边tab的位置。 教研团队代表动画 ?...小头像放大之后,大头像的位置应该如何确定,大头像挤开小头像的效果如何实现。

1.8K41

Lottie : 让动画如此简单

Lottie则负责解析动画的数据,计算每个动画某个时间点的状态,准确地绘制到屏幕上。...//第n层动画 ] 2.如何动起来 Lottie时序图: [1504855893605_6007_1504855893878.jpg] 利用属性动画控制进度,每次进度改变通知到每一层,触发LottieAnimationView...bitmap在动画加载到window被创建,被window删除回收。所以不宜在RecyclerView中使用包涵mattes或者mask的动画,否则会引起bitmap抖动。...如果使用lottie后,可以把效果导出到json动画文件里,客户端加载动画文件,循环设置进度,读取每画面,再和声音融合生成MV。...,内存和性能不够好;相对于属性动画,在展示大动画,帧率较低 2.优势 (1)开发效率高—代码实现简单,更换动画方便,易于调试和维护。

28K136

从设计师和开发的角度使用 lottie

下面讲讲如何从 Sketch 开始,制作一个 lottie 动画文件。...,只有在必要才使用路径关键动画。...参数1为数组,两个元素为开始和结束;参数2为,是否立即播放片段,还是等之前的动画播放完成 destroy 无 销毁 事件 onComplete onLoopComplete onEnterFrame...api 支持没有 airbnb 官方完整,投入生产环境还需要严格测试一下 vue-weex demo 使用@ali/rax-lottie 的 rax demo 如下 小结 在我看来,追求更精细完美的动画体验一直是设计师和前端开发的使命...lottie 的出现可以替代传统的 gif,并且提供的 api 可以更好的控制动画lottie 可能不适合用于过于复杂的大场景动画,但是局部的小动画,再适合不过了。

3.2K21

AirBnb 开源动画引擎 Lottie:采用 Core Animation 提高性能

Lottie 4.0 中,AirBnb 放弃了使用 CADisplayLink 在主 CPU 线程上制作图形动画的原始方法: 每一次,Lottie 将在主线程上执行代码,以推进动画的进度并重新渲染其内容...这意味着动画在播放将消耗 5–20% 以上的 CPU,从而减少了用于应用程序其余部分的可用 CPU 周期。...根据 Stephens 的说法,这使得 Lottie 在更复杂的情况下无法维持所需的速并且开始丢弃会变得相对常见。此外,主线程忙于一些昂贵的任务动画可能会出现一些抖动。...切换到核心动画(Core Animation)意味着动画被卸载到 GPU 上,这有三个好处:利用硬件加速,减少 CPU 负载,并在 CPU 繁忙提高速。...例如,Airbnb 应用程序在首次启动显示 Lottie 动画。我们在这里进行了一项实验,发现切换到新的渲染引擎可以缩短应用程序的总启动时间,同时还可以提高启动动画速和用户体验。

2K20

Android Lottie 中秋月饼变明月动画特效

和尚在 Android 端进行动画处理主要用的是 Android 自带的三种动画形式,今天和尚简单尝试通过 Airbnb Lottie 展示一个中秋月饼变明月的小动画Lottie Lottie...加载本地资源 LottieAnimationView 加载本地资源,需要先下载生成的 json 文件,并添加到工程中,通过 setAnimation() 引入本地资源;其中 setAnimation...硬件加速器 和尚在使用 Lottie 建议开启硬件加速器,降低动画帧率,避免卡顿; android:hardwareAccelerated="true" 2. json 文件解析 和尚之前觉得...op 分别对应起始/结束关键;w / h 为动画宽高;assets 为资源信息,包括 Drawable 等;layers 为图层信息; asstes 中 w / h 为资源宽高;u / p 分别对应资源路径和名称...;其中的 layers 也为图层信息;layers 中的 ks 为动画的主要信息; 和尚理解 Lottie 整体是利用属性动画控制进度,通过进度变更更改 layers 中触发 LottieAnimationView

1.1K10

音视频开发之旅(63) -Lottie 源码分析之动画与绘制

这篇我们分析的动画和渲染部分。 分析的重点:如何组织多图层layer的关系,控制先后处理不同图层的绘制以及动画。...二、LayerView树 Lottie中有各种Layer: 1.jpg 那么他们之间是什么关系呐?如何进行管理和层级控制呐?...Lottie存在mask、matters ,需要先saveLayer,再调用drawLayer返回。..., 支持文本和序列, 支持模版的编辑, 采用二级值文件而不是json,文件大小和解析的性能都会更好些 渲染层面:Lottie渲染层面的实现依赖平台端接口,不同平台可能会有所差异。...六、资料 Lottie实现思路和源码分析 Lottie 动画原理剖析 揭秘Lottie动画的优劣及原理 lottie-android 框架使用及源码解析 Lottie动画库 Android 端源码浅析

85420

【源码分析】Lottie 实现炫酷动画背后的原理

(ValueAnimator.ofFloat(0f, 1f); ) 说具体点就是 lottie 随属性动画修改 progress,每一个 Layer 根据当前的 progress 绘制所对应的内容,progress...(有点类似于动画) 当然说说简单,lottie其实做了非常多的工作,后续将详细解析 lottie-android 的实现原理。 3....文件的属性含义 bodymovin 导出的 包含了动画的一切信息, 动画的关键信息,动画该怎么做,做什么都包含在 里,Lottie 里所有的 Model 的数据都来自于这个 ( 该 对应的 Model...op 结束关键 w 动画宽度 h 动画高度 assets 动画图片资源信息 layers 动画图层信息 从这里可以获取 设计的动画的宽高,相关的信息,动画所需要的图片资源的信息以及图层信息。...但是,通过阅读源码发现其实 Lottie本身在 Android 平台已经做了适配工作,而且适配原理很简单,解析 ,从 读取宽高之后 会再乘以手机的密度。

1.9K11

面向前端的 Lottie & AE 动画手把手入门教学

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之外基本没有性能损耗, 因此效率非常高! 二..../index.html, 打开浏览器, 将会看到我们的动画, 是不是非常酷~ 除了能够播放和暂停, Lottie 还为我们提供了更加精细的动画控制方法和事件钩子, 有兴趣的小伙伴参考: GitHub

2.6K50

浏览器事件

动画相关 onanimationcancel: CSS动画意外中止,即在任何时候它停止运行而不发送animationend事件将发送此事件,例如animation-name被改变,动画被删除等...onanimationend: CSS动画到达其活动周期的末尾,按照(animation-duration*animation-iteration-count) + animation-delay进行计算...onanimationiteration: 此事件将会在CSS动画到达每次迭代结束触发通过执行最后一个动画步骤完成对动画指令序列的单次传递完成,迭代结束。...onloadeddata: 事件在浏览器加载视频/音当前触发触发。 onloadedmetadata: 事件在指定视频/音频的元数据加载后触发。...ontimeupdate: 事件在当前的播放位置发送改变触发。 onvolumechange: 事件在音量发生改变触发。 onwaiting: 事件在视频由于要播放下一而需要缓冲触发

2.4K20

前端动效讲解与实战

2.1.2 交互型动画用户自已参与的,对于交互性动画而言,我们可以在动画播放的某个时间节点触发相应的操作,进而让用户参与到其中,最常见的例子红包雨,不仅仅能提升用户的体验,还能提升我们的产品的多元性。...您可以为某个元素附加 JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。...动画的效果主要还是看transition相关属性即可。然而利用transition制作的动画也有着显著的缺点:transition需要事件触发,所以没法在网页加载自动发生。...骨骼事件动画执行到某个动作或某个触发自定义事件行为。动作数据继承:多角色可共用一套动画数据。可结合物理引擎和碰撞检测。...2.3.4.2 骨骼动画制作首先我们来了解一下,骨骼动画如何进行制作的:制作骨骼动画主要是使用 Spine 和 DragonBones 这样的工具进行制作。

2.6K30

设计提效-Figma插件篇

www.figma.com/community/plugin/958202093377483021/Mesh-Gradient 5、Webgradients-配色灵感工具 做设计非常常用的一个方法就是多去尝试,当我们在做某个界面的时候不知道配色该如何处理的时候...下载地址:https://www.figma.com/community/plugin/731176732337510831/Themer    12、Motion-关键动画 需要在做界面的动画...,很多设计师会问,Figma要如何导入AE?...Motion插件的作用是可以直接在Figma内完成关键动画设计,将大部分图层属性创建成关键动画,避免设计师做动画需要不停切换设计工具,在Figma内就可以轻松愉快的完成静态和动态的设计稿。...Figma内使用LottieFiles可以将自己的dotLottie(.lottie)和Lottie JSON(.json)文件导入Figma作为gif动画或高质量的svg图层,且可以访问和预览免费Lottie

2.1K30
领券