定義
API文檔里的定義如下:
Defines the transformation to be applied at one point in time of an Animation.
意思是說,定義了View在動畫運行的期間每個時刻的狀態。定義非常簡單,但是理解了Transformation,對理解整個android動畫的原理至關重要。
Transformation類的要點
既然Transformation可以保存View的屬性狀態,那它是如何做到的呢?
從Transformation的源碼里,我們可以看到以下兩個變量:
protected Matrix mMatrix;
protected float mAlpha;
Transformation便是通過以上兩個變量保存的。
對象變量matrix
Matrix的意思矩陣。API文檔定義如下:
The Matrix class holds a 3x3 matrix for transforming coordinates.
意思是說,該矩陣為一個3*3的陣列,目的是為了保存轉換過程的屬性。該矩陣示意圖如下:
image.png
其中MSCALE_X和MSCALE_Y用于保存縮放程度,MSKEW_X和MSKEW_Y用于保存錯切和旋轉程度,MTRANS_X和MTRANS_Y用于保存位移大小,MPERSP_0,MPERSP_1和MPERSP_2則是用于透視變換,比如做到立體旋轉。
浮點數變量alpha
這個參數自然是保存View的透明程度。