逐幀動畫,補間動畫,屬性動畫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資源消耗。函數