前两种属于传统动画
1、帧动画
播放一组预先定义好的图片,图片大的话容易引起OOM
2、补间动画
1、支持四种效果,平移、缩放、旋转、透明度变化。
2、对View的影像做动画,保持最终的状态,需要设置setFillAfter才能保持最终的状态。
3、自定义补间动画,重写它的initialize、applyTransformation
3、属性动画
可以对对象的属性进行动画,不仅仅是View,是Android 3.0之后添加的。
核心类有三个,ObjectAnimator、ValueAnimator、AnimatorSet
1、ObjectAnimator
1、这是平时用的比较多的,可以对一个对象的属性进行动画,
但是需要该属性有get和set方法,如果没有,可以自定义一个类来包装原是对象,加上get和set方法
2、可以设置属性名,动画时间,个数不定的属性值变化
3、可以通过插值器和估值器来实现各种各样的效果
1、插值器可以设置动画从初始值过渡到结束值的节奏
2、估值器可以设置动画如何从初始值过渡到结束值
3、插值器根据时间进度来得到数字进度(一个百分值),估值器则根据插值器得到的数字进度来得到当前数值
4、最后调用set函数设置属性
5、系统已经定义了很多插值器
4、还可以设置动画监听器
2、ValueAnimator
1、这是属性动画的核心类,ObjectAnimator继承它
2、ValueAnimator本身并不对对象进行动画,而是对一个值做动画。
3、在它的onAnimationUpdate函数中来根据该数值的变化来设置对象的动画
4、它也可以使用插值器和估值器
3、AnimatorSet
动画集合,就是可以同时进行或者按顺序进行多个动画
4、无限循环的动画在Activity退出时要停止,否则会引起内存泄漏