Android中的动画
1、View动画
View动画通过对场景里的对象不断做图像变换(平移,缩放,旋转,透明度)从而产生动画效果,它是一种渐进式动画。 View动画支持自定义。
View动画的四种变换效果对应着Animation的四个子类:TranslateAnimation,ScaleAnimation,RotateAnimation和AlphaAnimation。
自定义动画:只需要继承Animation这个抽象类,然后重写它的initialize和applyTransformation方法,在initialize方法中做一些初始化工作,在applyTransformation中进行相应的矩阵变换。
LayoutAnimation作用于ViewGroup,为ViewGroup指定一个动画,当ViewGroup的子元素出场时都会具有这种动画效果。
2、帧动画
帧动画通过顺序播放一系列图像从而产生动画效果,可以简单理解为图片切换动画。帧动画属于View动画的一种。系统提供了AnimationDrawable类来使用帧动画。
帧动画容易引起OOM,使用时尽量避免使用过多尺寸较大的图片。
3、属性动画
属性动画通过动态地改变对象的属性从而达到动画效果,为API11的新特性,在低版本无法直接使用属性动画,但是可以通过兼容库使用它。
属性动画中有ValueAnimator、ObjectAnimator和AnimatorSet等概念,通过它们可以实现绚丽的动画。
其中ObjectAnimator继承ValueAnimator,AnimatorSet是动画集合。
4、理解插值器和估值器
TimeInterpolator中文翻译为时间插值器,它的作用是根据时间流逝的百分比来计算出当前属性值改变的百分比。
TypeEvaluator的中文翻译为类型估值算法,也叫估值器,它的作用是根据当前属性改变的百分比来计算改变后的属性值。
属性动画中的插值器和估值器很重要,它们是实现非匀速动画的重要手段。