1、帧动画

帧动画是依次展示n张静态图片,造成动画的错觉,类似看视频一样。

使用方式

  1. 在drawable目录下定义XML文件,根节点为animation-list,然后放入定义更好的图片
  2. oneshot 表示是否重复播放动画
  3. 使用 AnimationDrawable 展示动画
AnimationDrawable animationDrawable = (AnimationDrawable) button.getBackground();
  animationDrawable.start();//开启动画

2、补间动画

补间动画也称view动画,补间动画只需指定动画开始,以及动画结束"关键帧", 而动画变化的"中间帧"则由系统计算并补齐。主要有:

  • AlphaAnimation:透明度渐变效果,创建时许指定开始以及结束透明度,还有动画的持续 时间,透明度的变化范围(0,1),0是完全透明,1是完全不透明;对应<alpha/>标签!
  • ScaleAnimation:缩放渐变效果,创建时需指定开始以及结束的缩放比,以及缩放参考点, 还有动画的持续时间;对应<scale/>标签!
  • TranslateAnimation:位移渐变效果,创建时指定起始以及结束位置,并指定动画的持续 时间即可;对应<translate/>标签!
  • RotateAnimation:旋转渐变效果,创建时指定动画起始以及结束的旋转角度,以及动画 持续时间和旋转的轴心;对应<rotate/>标签
  • AnimationSet:组合渐变,就是前面多种渐变的组合,对应<set/>标签
animation = AnimationUtils.loadAnimation(this,R.anim.anim_set);
img.startAnimation(animation);


动画也可以设置监听setAnimationListener(new AnimationListener())方法

  • onAnimationStart():动画开始
  • onAnimtaionRepeat():动画重复
  • onAnimationEnd():动画结束

过场动画

  • Fragment: 我们可以调用FragmentTransaction对象的setTransition(int transit) 为Fragment指定标准的过场动画
  • Activty设置过场动画非常简单,调用的方法是:overridePendingTransition(int enterAnim, int exitAnim),在startActivity(intent)或者finish()后添加

3、属性动画

属性动画可以对任何对象的属性做动画而不仅仅是View,甚至可以没有对象。除了作用对象进行扩展外,属性动画的效果也加强了,不仅能实现View动画的4中效果,还能实现其它多种效果,这些效果都是通过ValuAnimator或ObjectAnimator、AnimatorSet等来实现的。

8.4.3 Android动画合集之属性动画-初见 | 菜鸟教程

Android系统动画 android 动画_属性动画

  • ValueAnimator:调用ValueAnimator.ofInt/ofFloat 获得,然后设置动画持续时间 duration,通过 addUpdateListener 设置时间监听,使用参数animationgetAnimatedValue()获得当前的值,然后我们可以拿着这个值 来修改View的一些属性,从而形成所谓的动画效果,接着设置setInterpolator动画渲染模式, 最后调用start()开始动画的播放
  • ObjectAnimator:通过该类我们可以直接 对任意对象的任意属性进行动画操作
  • animatorSet:组合动画

AnimatorSet这个类提供了一个play()方法,如果我们向这个方法中传入一个Animator对象(ObjectAnimator或者ValueAnimator)将会返回一个AnimatorSet.Builder的实例,AnimatorSet.Builder中包含了以下四个方法:

  • after(Animator anim) : 将现有动画插入到传入的动画之后执行。
  • after(long delay):将现有的动画延迟指定的毫秒后执行。
  • before(Animator anim):将现有的动画插入到传入的动画之前执行。
  • with(Animator anim):将现有的动画和传入的动画同时执行。

动画具有start、Repeat、End、Cancel四个过程,Android提供了监听接口:Animator.AnimatorListener,提供空态:AnimatorListenerAdapter。

使用XML来编写动画:<animator><objectAnimator><set>