Android除了三大动画,还有哪些动画()

在上一篇博客Android的三种动画详解 中讲解了Android的帧动画、View动画(补间动画)、属性动画。 这三种动画已能解决绝大部分需求,但实际上,随着Android的发展,有越来越多的动画产生,有的是Android原生的,有的是三方开源的,本文就此做了一个简单的梳理。
1、Lottie动画(三方开源) Lottie是Airbnb开源的一个支持 Android、iOS 以及 ReactNative,利用json文件的方式快速实现动画效果的库。Lottie 库目前在 Android 开发中尤其复杂动画效果上地位显著。点击进入其GitHub地址。
简单使用如下, 第一步,在xml布局中添加:

//是否自动播放

第二步,在代码中设置:
LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view); animationView.setAnimation("check.json"); animationView.loop(true); animationView.playAnimation(); //此方法将加载文件并在后台解析动画,并在完成后异步开始呈现

官方效果图:

2、触摸反馈动画(Ripple Effect)(原生) 所谓触摸反馈动画就是一种点击效果,作用在可点击的 View 上时,当有点击事件时会有涟漪般的反馈效果,使用在按钮上是再好不过了。
Ripple 波纹效果有两种:
  • 1、有边界: ?android:attr/selectableItemBackground
  • 2、无边界,要求API21以上: ?android:attr/selectableItemBackgroundBorderless
代码示例如下:

Android除了三大动画,还有哪些动画()
文章图片

3、揭露动画(Reveal Effect) 揭露动画在系统中很常见,就是类似波纹的效果, 从某一个点向四周展开或者从四周向某一点聚合起来。它是一个Android L(5.0)新增的动画效果。
可以用在 Activity 里面的 View 动画效果,用来揭露某个隐藏 View 的显示;
也可以使用在 Activity 跳转过渡动画中。
如下图使用时的一些效果:
Android除了三大动画,还有哪些动画()
文章图片

应用可以调用**ViewAnimationUtils.createCircularReveal()**方法可以去创建一个RevealAnimator动画,这个方法代码如下:
public static Animator createCircularReveal(View view, int centerX,int centerY, float startRadius, float endRadius) { return new RevealAnimator(view, centerX, centerY, startRadius, endRadius); }

这五个参数分别是:
  • view 操作的视图
  • centerX 动画开始的中心点X
  • centerY 动画开始的中心点Y
  • startRadius 动画开始半径
  • startRadius 动画结束半径
从继承关系上看,RevealAnimator是不同于三大动画的另一个动画类。
4、转场动画 & 共享元素(Activity 切换动画) 转场动画听名字就知道它的使用场景了,转场、转场自然是用在场景转换的时候:
转场效果我们一般用在 Activity 切换时的动画效果上;
共享元素一般我们使用在转换的前后两个页面有共同元素[注1]时;
同时也可以在 Activity 布局发生场景变化时,让其中的 View 产生相应的过渡动画。
共同元素[注1]:并非限制指作用的两个共享元素的状态、大小、显示位置完全相同。而是指两者在页面中要传递的内容相同,比如是从文章列表转到文章详情页面时的相同标题、主图等。如果共享元素的两者是不同的元素,一方面在显示时共享元素在将结束转场完成转换时会有显示的闪动,另一方面,如果两者表达的是不同的元素,用户也会感到很莫名。
话不多说,放上效果图:
在这里插入图片描述
详细介绍参考 Android动画详细教程
5、视图状态动画(Animate View State Changes) 所谓视图状态动画,就是 View 在状态改变时执行的动画效果。和之前我们通过 selector 选择器给 Button 设置不同状态下的背景效果是一样一样的。
当然,它的使用场景也是特定的:
当 View 的状态改变时,希望此时显示的效果和静态效果有所区分,即显示效果也做出相应的改变,比如 Z 轴抬高,大小改变、或其他动画效果等。
放上一个按钮被点击后设置的视图状态动画(点击时Z轴抬高):
Android除了三大动画,还有哪些动画()
文章图片

详细介绍参考 Android动画详细教程
6、矢量图动画(Vector 动画) 不知道大家现在在开发中,在图标显示上是不是还在切各种尺寸的 .png 图片适配。现在我可是一直在使用 svg 图标(在开发中是通过转换成 Vector 再使用,现在 AS 中导入,可以自动完成转换,转换不成功的再用上面网址转换),svg 图标的好处自不用说了。那矢量图动画有是怎么回事呢?
VectorDrawable 一般是以 为根标签定义的 XML 文件,、、、 元素都有各自可以播放动画的属性。具体怎么生成具有动画效果的图标,可以在系列教程中查看。
我们可以在以下场景使用:
  • 具有动态变换效果的图标;
  • 也可以用在需要特定动画效果的 VectorDrawable 图片上。

详细介绍参考 Android动画详细教程
7、约束布局实现的关键帧动画(ConstraintSet 动画) 这个动画就比较新了,甚至连官方都没有提供完整的文档。这是通过 ConstraintLayout 实现的一种关键帧动画。
关键帧动画:(百度百科)任何动画要表现运动或变化,至少前后要给出两个不同的关键状态,而中间状态的变化和衔接电脑可以自动完成,在 Flash 中,表示关键状态的帧动画叫做关键帧动画
所谓关键帧动画,就是给需要动画效果的属性,准备一组与时间相关的值,这些值都是在动画序列中比较关键的帧中提取出来的,而其他时间帧中的值,可以用这些关键值,采用特定的插值方法计算得到,从而达到比较流畅的动画效果。
而 ConstraintSet 动画既然实现的是关键帧动画,那至少需要两个关键帧,而对于 ConstraintSet 来说每次需要的两个关键帧就是两种布局状态,而两种布局状态的转变过程 ConstraintSet 会生成一定的动画过渡。
那使用场景根据约束动画的说明也比较明显了,就是同一个布局需要重新调整布局内部 View 位置时使用。

【Android除了三大动画,还有哪些动画()】详细介绍参考作者OCGYang的GitHub Android动画详细教程

    推荐阅读