Android 中的 Matrix

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.