Android中的动画分为视图动画(View Animation)、属性动画(Property Animation)以及Drawable动画。
视图动画就是很早就已出现被大家所熟知的:translate平移、rotate翻转、alpha透明度渐变、scale缩放、animationset动画组合五大类。而该类视图动画只能用在View上,且xml文件只能放在res/anim下,父类就是Animation。
属性动画后面才出来,主要是ValueAnimator及其子类ObjectAnimator,且xml文件只能放在res/animator下,父类是Animator。与视图动画不同,同样改变一个view,它可以改变view的属性,而视图动画仅仅是一个动画效果。
Interpolator
它是用来控制变化速率的接口,继承关系:
abstract public class BaseInterpolator implements Interpolator
Interpolator extends TimeInterpolator
LinearInterpolator 线性,即匀速变化,加速度为0
AccelerateInterpolator 加速,即加速变化,加速度逐渐增加
DecelerateInterpolator 减速,即减速变化,加速度逐渐减少
AccelerateDecelerateInterpolator 速率变化先加速再减速
BounceInterpolator 类似于一个球落地之后反复弹起直至静止的速率变化
AnticipateInterpolator 先回退一小步,然后再迅速前进
OvershootInterpolator 冲过了头回滚一点
AnticipateOvershootInterpolator 以上两点结合
CycleInterpolator 正弦周期变化
动画的执行全是依靠的handler和runnable来做的,一般不会出现卡帧的情况,一旦出现说明哪里代码有耗时问题。需要提出一点是AnimationSet,它是所有动画的集合,且可以顺序执行,也可以打乱执行。