標籤:width 參考 map rpo 封裝 ret new 系統預設 res
Matrix 是 Android SDK 提供的一個矩陣類,它代表一個 3 X 3 的矩陣
Matrix
主要可以對映像做4種基本變換
- Translate 平移變換
- Rotate 旋轉變換
- Scale 縮放變換
- Skew 錯切變換
Matrix
類中的方法,主要也是和這四個變換相關,只是對計算過程做了封裝,作用對象是Bitmap
而不是Canvas
利用 Matrix 來進行 Translate(平移)、Scale(縮放)、Rotate(旋轉)的操作,就是在操作著這個矩陣中元素的數值來達到我們想要的效果。
1. 為什麼 Matrix 是一個 3 X 3 的矩陣?
其實 2 X 2 的矩陣是足以表示的,不過是為了方便計算而合并寫成了 3 X 3 的格式。
2. Matrix的作用?
- MTRANS_X、MTRANS_Y 同時控制著 Translate
- MSCALE_X、MSCALE_Y 同時控制著 Scale
- MSCALE_X、MSKEW_X、MSCALE_Y、MSKEW_Y 同時控制著 Rotate
- 從名稱上看,我們可以順帶看出 MSKEW_X、MSKEW_Y 同時控制著 Skew
3. 樣本:
@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) { Matrix matrix = t.getMatrix(); matrix.preScale(interpolatedTime, interpolatedTime);//縮放 matrix.preRotate(interpolatedTime * 360);//旋轉 //下面的Translate組合是為了將縮放和旋轉的基點移動到整個View的中心,不然系統預設是以View的左上方作為基點 matrix.preTranslate(-mWidth / 2, -mHeight / 2); matrix.postTranslate(mWidth / 2, mHeight / 2);}
實際上這幾行代碼用矩陣來表示就相當於如下所示:
參考:http://www.jianshu.com/p/11e062284491
http://geek.csdn.net/news/detail/89873
Android 中的 Matrix