android动画学习摘要

android之animator 和animation 的区别

Animation框架定义了透明度,旋转,缩放和位移几种常见的动画,而且控制的是一个整个View动画,实现原理是每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧,如果动画没有完成,继续调用invalidate()函数,启动下次绘制来驱动动画,动画过程中的帧之间间隙时间是绘制函数所消耗的时间,可能会导致动画消耗比较多的CPU资源。
在Animator框架中使用最多的是AnimatorSet和ObjectAnimator配合,使用ObjectAnimator进行更精细化控制,只控制一个对象的一个属性值,多个ObjectAnimator组合到AnimatorSet形成一个动画。而且ObjectAnimator能够自动驱动,可以调用setFrameDelay(longframeDelay)设置动画帧之间的间隙时间,调整帧率,减少动画过程中频繁绘制界面,而在不影响动画效果的前提下减少CPU资源消耗。

  • 属性动画实际改变了动画目标的属性值,比如平移一个 View,View 的位置真实发生了改变,而 View Animation仅是改变了屏幕绘制位置,真实位置不变。
  • 属性动画可以作用于没有绘制到屏幕上的对象。
  • 属性动画可以作用于非 View 对象,也可以制作四类基本动画之外的动画效果。
  • View Animation 的代码量更少,效率更高。

猜你喜欢

转载自blog.csdn.net/shaoyangtangsong/article/details/87887238