当前位置: 首页 > news >正文

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

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

Lottie 是个啥?

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

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

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

AAffA0nNPuCLAAAAAElFTkSuQmCC引用 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);

AAffA0nNPuCLAAAAAElFTkSuQmCC

Lottie 孰优劣?

优势:

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

劣势:

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

如何缓解劣势:

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

AAffA0nNPuCLAAAAAElFTkSuQmCC

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

作者:阿策神奇

相关文章:

  • android 找不到布局id,为什么给layout加上id,ButterKnife就找不到资源了?
  • 安装BizTalk Server 2006出现BizTalk架构编辑器同类型化DataSet设计器冲突
  • android 路由表参数,Android点我达路由DRouter框架设计与解析
  • WEB2.0下的门户网站建设
  • android https 证书过期变更,使用自定义证书的Android https连接
  • android7彩蛋oppo,OPPO ColorOS 7来了!没想到重磅消息却是“彩蛋”Reno3系列?
  • 利用CodeSmith为SQL Server CE生成项目代码
  • android隐藏微信好友,如何使用微信隐藏的恢复小技巧?微信好友恢复!
  • 梦里方知此身背
  • android指纹登录demo,Android指纹认证Demo源码
  • assicdoc 转换html,Swagger+spring boot 转换为html,PDF文件等
  • 英雄会开幕致辞--分享交流,开放协作带来共同繁荣的时代
  • html按钮过渡效果,css3_transition: 体验好的过渡效果。附 好看的按钮
  • Winsocket编程之TCP/IP体系结构
  • html 属于mvvm框架,vue.js是mvvm框架吗?
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • nodejs实现webservice问题总结
  • npx命令介绍
  • Quartz初级教程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue-router 实现分析
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 成为一名优秀的Developer的书单
  • 初识 beanstalkd
  • 前端面试总结(at, md)
  • 嵌入式文件系统
  • 什么软件可以剪辑音乐?
  • 时间复杂度与空间复杂度分析
  • Nginx实现动静分离
  • 积累各种好的链接
  • ###项目技术发展史
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (差分)胡桃爱原石
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (五)Python 垃圾回收机制
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net core 6 集成和使用 mongodb
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net 按比例显示图片的缩略图
  • .net 调用php,php 调用.net com组件 --
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET性能优化(文摘)
  • /usr/bin/env: node: No such file or directory