#### 三方框架之Lotti使用
Lottie 的使用

1、添加 Gradle 依赖

dependencies { compile 'com.airbnb.android:lottie:1.5.3'}

2、使用View

Lottie支持Jellybean(API 16)及以上。最简单的使用方法是LottieAnimationView

< com .airbnb.lottie.LottieAnimationView
android :id = “ @ + id / animation_view ”
android :layout_width = “ wrap_content ”
android :layout_height = “ wrap_content ”
app :lottie_fileName = “ hello-world.json ”
app :lottie_loop = “ true “
app :lottie_autoPlay = ” true “ />
}

或者从 代码中加载。 从 app / src / main / assets中的json资源:

LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);
animationView.setAnimation("hello-world.json");
animationView.loop(true);

如果你想复用动画,比如在列表中的每个项目或者从网络请求加载JSONObject

LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);
...
Cancellable compositionCancellable = LottieComposition.Factory.fromJson(getResources(), jsonObject, (composition) -> {
animationView.setComposition(composition);
animationView.playAnimation();
});

然后控制动画执行或者对动画添加监听

animationView.addAnimatorUpdateListener((animation) -> {
// Do something.
});
animationView.playAnimation();
...
if (animationView.isAnimating()) {
// Do something.
}
...
animationView.setProgress(0.5f);
...

// 自定义动画的速度和持续时间

ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f)
.setDuration(500);
animator.addUpdateListener(animation -> {
animationView.setProgress(animation.getAnimatedValue());
});
animator.start(); // 动画开始
...
animationView.cancelAnimation(); // 关闭

支持 After Effects 的功能

关键的插值器

  • Linear Interpolation 线性插值器
  • Bezier Interpolation 贝塞尔插值器
  • Hold Interpolation 保持插值器

Rove Across Time

Spatial Bezier

固定变换

  • Transform Anchor Point 锚点变换
  • Transform Position 位置变换
  • Transform Scale 伸缩比例变换
  • Transform Rotation 旋转变换
  • Transform Opacity 透明度变换

遮罩 (碉堡了!)

Path 路径

  • Opacity 不透明度
  • Multiple Masks (additive, subtractive, inverted) 多重多样的遮罩

Track

  • Alpha Matte 透明度遮罩

Parenting

Multiple Parenting

Nulls

图层形状

  • Rectangle (All properties) 矩形
  • Ellipse (All properties) 椭圆
  • Polystar (All properties) 北极星?什么鬼
  • Polygon (All properties. Integer point values only.) 多边形
  • Path (All properties) 路径

Anchor Point 锚点

Position 位置坐标

Scale 缩放

Rotation 旋转

Opacity 不透明

Group Transforms (Anchor point, position, scale etc) 合成变换

Multiple paths in one group 多路径合成

冲程(形状层,外层)

  • Stroke Color 描边颜色
  • Stroke Opacity 不透明描边
  • Stroke Width 描边宽度
  • Line Cap 压线帽
  • Dashes 破折号

填充

  • Fill Color 填充颜色
  • Fill Opacity 填充不透明度

修剪路径

  • Trim Paths Start
  • Trim Paths End
  • Trim Paths Offset

性能和内存

1、如果组合没有用到遮罩masks或mattes,那么性能和内存开销应该相当不错。没有创建位图bitmap,大多数操作都是简单的画布操作。

2、如果组合中有遮罩masks或mattes,将在合成的地方创建2-3个bitmap,当动画师徒添加到view时,bitmap由lotti自动创建,并在View删除时被回收。所以不建议在RecyclerView中使用带有遮罩masks或mattes的动画,可能会造成溢出。(后面看到git又把这一条更新掉了,索性还是贴上来吧)!后来看到Git更新为:如果组合有遮罩或遮罩,将使用屏幕外缓冲区,画面以外的缓冲区的使用和性能会有影响了。

3、如果在list中使用,建议在LottieAnimationView.setAnimation(String,CacheStrategy)中使用CacheStrategy,因此动画不必每次都反序列化。

Lottie 动画的更多相关文章

  1. Android之Lottie动画详解

    文章大纲 一.Lottie介绍二.Lottie实战三.项目源码下载四.参考文章   一.Lottie介绍 1. 什么是Lottie   Lottie是Android和iOS的移动库,用于解析Adobe ...

  2. 程序员也想改 Lottie 动画?是的!

    一.前言 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,用过都说好.完全解耦开发人员和设计师,让设计师设计的动画,在程序中无缝还原,真是一旦拿 ...

  3. Lottie 动画里有图片怎么办?设计师小姐姐也能帮你减少开发量!

    一.序 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整解决方案,设计师只需要使用 After Effectes (之后简称 AE)设计出动画之后,使用 Lotti ...

  4. [UWP]缓存Lottie动画帧

    在上一篇博文<[UWP]在UWP平台中使用Lottie动画>中我简单介绍了一下LottieUWP项目以及如何使用它呈现Lottie动画,这篇文章里我们来讲点进阶的东西--缓存Lottie动 ...

  5. [UWP]在UWP平台中使用Lottie动画

    最近QQ影音久违的更新了,因为记得QQ影音之前体验还算不错(FFmepg的事另说),我也第一时间去官网下载体验了一下,结果发现一些有趣的事情. 是的,你没看错,QQ影音主界面上这个动画效果是使用Lot ...

  6. 【Flutter 3-5】Flutter进阶教程——在Flutter中使用Lottie动画

    作者 | 弗拉德 来源 | 弗拉德(公众号:fulade_me) Lottie动画 在移动开发中总是需要展示一些动画特效,作为程序员的我们并不是很擅长用代码做动画,即便是有些动画可以实现,在跨平台的过 ...

  7. 在vue里添加好看的lottie动画 (^_^)

    为什么用lottie ★~★ 1.能让你的程序不那么单调 2.能让一些有审美强迫症的同学好受一点 3.网上有丰富的资源 点我进入lottie资源网站 引入lottie库 (>.<) 在vu ...

  8. iOS 动画(基于Lottie封装)

    一般app中都会带有动画,而如果是一些复杂的动画,不但实现成本比较高,而且实现效果可能还不能达到UI想要的效果,于是我们可以借助lottie来完成我们想要的动画.   lottie动画1.gif   ...

  9. Lottie在手,动画我有:ios/Android/Web三端复杂帧动画解决方案

      为什么需要Lottie 在相对复杂的移动端应用中,我们可能会需要使用到复杂的帧动画.例如: 刚进入APP时候可能会看到的入场小动画,带来愉悦的视觉享受 许多Icon的互动变化比较复杂多变的时候,研 ...

随机推荐

  1. POJ 1458 Common Subsequence 最长公共子序列

    题目大意:求两个字符串的最长公共子序列 题目思路:dp[i][j] 表示第一个字符串前i位 和 第二个字符串前j位的最长公共子序列 #include<stdio.h> #include&l ...

  2. (转载)深度学习的weight initialization

    本文转自:谷歌工程师:聊一聊深度学习的weight initialization TLDR (or the take-away) Weight Initialization matters!!! 深度 ...

  3. Python3-线程

    线程 什么是线程 线程的创建开销小 线程与进程的区别 为何要用多线程 多线程的应用举例 开启线程的两种方式 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别 多线程并发的socket服务器 ...

  4. shell脚本 统计一段程序运行时间【转】

    转自:https://bbs.csdn.net/topics/391943383#include <stdio.h> #include <stdlib.h> #include ...

  5. make 命令【转】

    转自:https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds3/make.htm#make__row-d3 ...

  6. vue 选城市三级联动

    <div id="example"> <select v-model="prov"> <option v-for="op ...

  7. Error occurred in deployment step 'Retract Solution': xxx 无法反序列化,因为它没有公共的默认构造函数

    一.环境:SharePoint 2016 + Visual Studio 2015, 二.错误描述: 错误1:帮朋友写个计时器Demo,部署位置GAC,来回部署几次后,vs2015报错: 严重性 代码 ...

  8. 手动注册 Omron SYSMAC OPC Server 2

    使用如下注册表操作实现 Omron SYSMAC OPC Server 2 的注册,包括COM组件和ProgID. 注意,手动注册适用于在win10等不兼容老版本程序的正常使用的情况,此方法一般在单机 ...

  9. "贪吃蛇"-css3效果

    clip  :  http://www.w3school.com.cn/cssref/pr_pos_clip.asp 姜糖水  :  http://www.cnphp6.com/archives/60 ...

  10. css3 翻转

    参考资料: WEB骇客  :  http://www.webhek.com/css-flip/ Demo : Demo(谷歌浏览器观看,没做兼容) Demo截图: 代码: <!DOCTYPE h ...