
动画有平移,缩放,旋转,透明度四种,以及帧动画,这四种view动画很有局限性,很多效果达不到,而且坐标是固定的,动画过程中位置并没有改变,比如一个抛物线的球结束后,点击能够响应的位置其实还是在之前的位置,结束的的位置点击我们发现根本无响应。帧动画就是几个view进行切换,但是容易引起oom,在api11后,对应android3.0,引入了属性动画。我们现在的版本一般兼容到4.4足够了,不过view动画在activity切换效果用overpendingTransition挺方便。属性动画基本能实现所有效果,包括valueAnimator,objectAnimator和animatorSet,objectAnimator是valueAnimator的子类。我们只需要调用objectAnimator.ofInt(),objectAnimator.ofFloat()根据参数就可以实现很多效果。而animatorSet是动画集合,可以让几个动画同时进行,达到效果,比如抛物线其实是横纵坐标分离同时动画即可实现,还有插值器interpolator和估值器typeEvaluator可以实现均速,均加速,匀减速等效果。属性动画还有监听器animatorListener和animatorUpdateListener。
属性动画原理
本质就是根据传入的初始值和最终值,通过反射不断地去调用set和get方法,让传递的值越来越接近最终值。
属性动画注意
循环的动画在退出时要停止,尽量用dp不用px不然适配不好,要开启硬件加速。
网友评论