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