说到动画效果,一般都会感到很高端,感觉很酷炫;而小菜技术有限,稍复杂的动画效果也需要很多时间处理,但是遇到时间紧任务重的情况该怎么办呢?那就尝试一下

Lottie 是个啥?

Lottie 咋集成?build.gradle 中添加 compile 'com.airbnb.android:lottie:2.5.5';小菜需要支持 Android 版本 15,所以需要在 AndroidManifest.xml 中添加如下版本权限:

Tips: 此时还要注意 AndroidManifest.xml 根目录中要添加 xmls:tools,如图:

同步之后即可添加动画效果,在众多酷炫的动画中选择符合自身业务的动画,下载,会生成一个 json 文件,可供 Android 和 IOS 共用,将下载好的 json 文件拷贝到 assets 中;小菜好奇 json 文件内容,打开大概了解是动画图层的一系列元素,但并不能直接明了的理解,这也是一个动画不方便动态修改样式但弊端之一;

引用 LottieAnimationView,xml 中直接添加并设置基本属性或只是在 xml 中添加控件通过 Java/Kotlin 调整 LottieAnimationView 动画过程;

android:layout_width="match_parent"

android:layout_height="80dp"

android:layout_gravity="center"

airbnb:lottie_autoPlay="true"

airbnb:lottie_fileName="animation-w180-h180.json"

airbnb:lottie_loop="true" />

android:id="@+id/test_lav1"

android:layout_width="wrap_content"

android:layout_height="80dp"

android:layout_weight="1" />若第二种,通过 Java/Kotlin 动态设置 LottieAnimationView 动画属性;mLav1.setAnimation("animation-w180-h180.json");// ------ 设置动画的三种方式 ------// 1. 当前版本已经不推荐使用该方法了// mLav1.loop(true);// 2. 设置循环动画次数// mLav6.setRepeatCount(5);// 3. 设置动画轮播属性,从头播放// mLav5.setRepeatMode(Animation.RESTART);mLav1.setRepeatMode(Animation.RESTART);

mLav1.playAnimation();

至此,即可实现 LottieAnimationView 动画的完整效果,小菜在测试时还测试了以下的属性,因为 LottieAnimationView 继承的还是 ImageView,所以很多属性都保留,还包括动画的坚挺方法;也尝试了一下 pauseAnimation() 和 cancelAnimation(),均可停止动画播放:// 可监听动画的各阶段属性mLav1.addAnimatorListener(new Animator.AnimatorListener() {    @Override

public void onAnimationStart(Animator animation) {

Log.e(TAG, "onAnimationStart");

}    @Override

public void onAnimationEnd(Animator animation) {

Log.e(TAG, "onAnimationEnd");

}    @Override

public void onAnimationCancel(Animator animation) {

Log.e(TAG, "onAnimationCancel");

}    @Override

public void onAnimationRepeat(Animator animation) {

Log.e(TAG, "onAnimationRepeat");

}

});// pauseAnimation() 和 cancelAnimation()mLav3.setAnimation("animation-w180-h1802.json");

mLav3.loop(true);

mLav3.playAnimation();

Handler handler = new Handler();

handler.postDelayed(new Runnable() {    @Override

public void run() {

mLav3.pauseAnimation();//      mLav4.cancelAnimation();

}

}, 3000);

Lottie 孰优劣?

优势:

Lottie 的优势很明显,动画效果酷炫且流畅;支持跨平台效果统一;集成简单。

劣势:

万事万物都有两面性,Lottie 的劣势在于,动画效果不可动态修改样式,这一点很重要,不能直接调整动画的颜色等,依赖于 json 文件;据说有个别的动画兼容性不太好(小菜并没遇到)。

如何缓解劣势:

Lottie 难道只是固定的网站上这些样式吗?有些样式很好,但是个别颜色不太合适的动画效果怎么办?官方提供了 Lottie。

Lottie 是一种便捷的动画方式,小菜觉得学好动画的基础也很重要,

作者:阿策神奇

android 添加json动画,Lottie 站在巨人的肩膀上实现 Android 酷炫动画效果相关推荐

  1. Lottie 站在巨人的肩膀上实现 Android 酷炫动画效果

    说到动画效果,一般都会感到很高端,感觉很酷炫:而小菜技术有限,稍复杂的动画效果也需要很多时间处理,但是遇到时间紧任务重的情况该怎么办呢?那就尝试一下 Lottie 吧,酷炫的动画集成却相当简单,还支持 ...

  2. 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们<Visual C++游戏开发>专栏的游戏引擎导论,也 ...

  3. 游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8250057 作者:毛星云(浅墨 ...

  4. 站在巨人的肩膀上-像kubernetes一样用etcd存储自定义对象

    背景 众所周知,kubernetes利用etcd存储API对象,例如Pod.Deployment.StatefulSet等等.笔者认为kubernetes这种API对象的设计方案当前来看非常先进,基于 ...

  5. 站在巨人的肩膀上看世界,MySQL初步使用语法

    站在巨人的肩膀上看世界,MySQL初步使用  MySQL是一个常用的数据库,对于他的使用,我们需要尽量的了解它,但是掌握初步的语法,也可以勉强使用它,这都归功于它的研发者们.正是因为这些大佬,写好了软 ...

  6. 站在巨人的肩膀上:C#编写WindowsService

    本文将为大家详细介绍如何用C#编写一个系统服务,当然肯定不是教大家从头写,而是在一个搭建好的框架上进行自我创作! 一.项目整体架构 本项目的开发是针对某设备的开启异常情况进行邮件提醒,针对监控到的未开 ...

  7. 站在巨人的肩膀上“思考”问题,重在思考而不是拿来主义

    米老师按:觉得值得讨论的小文!我还要认真地想一想 主题:围绕职责链设计模式-计算收费有效时间博客展开讨论 参与人: 讨论时间: 讨论内容 这次讨论主要分为以下几点: 一.职责链模式应用于机房收费系统计 ...

  8. 站在巨人的肩膀上看Servlet——原来如此(更适合初学者认识Servlet)

    前言: 有段时间没更新博客了,这段时间因为要准备考试,考完试后又忙了一阵别的事,一直没能静下心来写博客.大学考试真是越来越恶心了,各种心酸,那酸爽,够味.不过还好,马上就要大三了,听大三学长学姐说大三 ...

  9. “站在巨人的肩膀上”

    站在巨人的肩膀上需要拥有巨人的实力 容易错误理解成:"盗取"巨人的成果并漠视了巨人

最新文章

  1. mysql partition赋权_mysql 创建用户及赋权
  2. Android 开发中使用Intent传递数据的方法
  3. mysql的cpu高定位
  4. 《引爆点》读书笔记(一)
  5. 《Essential C++》笔记之设计一个泛型算法(一)
  6. linux远程登录失败锁定,登录失败锁定策略配置登录超时策略禁用root远程登录脚本...
  7. How to research,22页PPT
  8. python thread start_Python中Thread类的start和run方法的区别
  9. 【读书笔记】《软件方法(上)业务建模和需求》(第2版)习题答案
  10. 怎么看java源代码
  11. ASME Y14.5 - 2018 中文版 尺寸与公差标注 GDT形位公差
  12. python null类型
  13. 蓝本(blueprint)
  14. 简单粗暴搞定网易云音乐限制!找回失去的灰色快乐
  15. Python将url转换作为合法文件名
  16. Adapter的作用及用法
  17. C++ BYTE 和 int 互转
  18. 火箭队新赛季十大最卖座电影前瞻!
  19. 谷歌浏览器如何安装vue调试工具
  20. 3DMax高级建模人物骨骼蒙皮!零基础快速入门!不要错过!

热门文章

  1. 微信小程序开发之——拍照上传
  2. Linux拓展之字段分隔符IFS
  3. 图片爬取和IP地址查询
  4. 如何使用计算机远程关闭手机软件,如何使用手机远程遥控电脑关机?手机遥控电脑关机方法图文介绍...
  5. 数据分析 知识体系 Python篇
  6. 小数输出最简分数c语言,小数化成最简式分数
  7. 什么模式下不可使用曝光补偿_摄影从零到入门 曝光模式与测光方法详解
  8. 使用计算机视觉来做异常检测
  9. 2017年携程旅游校招Java研发笔试编程题(3个)
  10. 基于Grafana的Web监控报警