參考:matrix的set,pre,post呼叫順序
matrix主要用於對平面進行平移(translate),縮放(scale),旋轉(rotate)以及斜切(skew)操作。
為簡化矩陣變換,android封裝了一系列方法來進行矩陣變換;其中包括:
set系列方法:settranslate,setscale,setrotate,setskew;設定,會覆蓋之前的引數。
pre系列方法:pretranslate,prescale,prerotate,preskew;矩陣先乘,如m』 = m * t(dx, dy)。
post系列方法:posttranslate,postscale,postrotate,postskew;矩陣後乘,如m』 = t(dx, dy) * m。
matrix呼叫一系列set,pre,post方法時,可視為將這些方法插入到乙個佇列.當然,按照佇列中從頭至尾的順序呼叫執行.
其中
pre表示在隊頭插入乙個方法,當執行了一次set後:pre方法總是插入到set前部的佇列的最前面,post方法總是插入到set後部的佇列的最後面。post表示在隊尾插入乙個方法.
set表示把當前佇列清空,並且總是位於佇列的最中間位置.
matrix m = new matrix();
m.setrotate(45);
m.settranslate(80, 80);
只有m.settranslate(80, 80)有效,因為m.setrotate(45);被清除.
matrix m = new matrix();
m.settranslate(80, 80);
m.postrotate(45);
先執行m.settranslate(80, 80);
後執行m.postrotate(45);
matrix m = new matrix();
m.settranslate(80, 80);
m.prerotate(45);
先執行m.prerotate(45);
後執行m.settranslate(80, 80);
matrix m = new matrix();
m.prescale(2f,2f);
m.pretranslate(50f, 20f);
m.postscale(0.2f, 0.5f);
m.posttranslate(20f, 20f);
執行順序:
m.pretranslate(50f, 20f)–>
m.prescale(2f,2f)–>
m.postscale(0.2f, 0.5f)–>
m.posttranslate(20f, 20f)
注意:m.pretranslate(50f, 20f)比m.prescale(2f,2f)先執行,因為它查到了佇列的最前端.
matrix m = new matrix();
m.posttranslate(20, 20);
m.prescale(0.2f, 0.5f);
m.setscale(0.8f, 0.8f);
m.postscale(3f, 3f);
m.pretranslate(0.5f, 0.5f);
執行順序:
m.pretranslate(0.5f, 0.5f)–>
m.setscale(0.8f, 0.8f)–>
m.postscale(3f, 3f)
注意:m.setscale(0.8f, 0.8f)清除了前面的m.posttranslate(20, 20)和m.prescale(0.2f, 0.5f);
matrix.setscale(interpolatedtime, interpolatedtime);
matrix.pretranslate(-centerx, -centery);
matrix.posttranslate(centerx, centery);
經常在中心縮放的應用中看到這段**.
pretranslate是指在setscale前,平移,
posttranslate是指在setscale後平移
注意他們引數是平移的距離,而不是平移目的地的座標!
由於縮放是以(0,0)為中心的,所以為了把介面的中心與(0,0)對齊,就要pretranslate(-centerx, -centery),
setscale完成後,呼叫posttranslate(centerx, centery),再把移回來,這樣看到的動畫效果就是activity的介面從中心不停的縮放了
注:centerx和centery是介面中心的座標。
Matrix詳解 Matrix怎麼用
在剛才的viewpager練習中,用到了matrix,在這裡再整理一下它的具體用法 1 translate 平移變換 2 scale 縮放變換 3 rotate 旋轉變換 4 skew 錯切變換 在android的api裡對於每一種變換都提供了三種操作方式 set 用於設定matrix中的值 pos...
Matrix使用的分析
在android中,可以使用matrix進行相關的影象處理 如 平移 旋轉 縮放 錯切 對稱等 就拿平移來說吧 1 一般我們要想平移乙個影象,那麼我們先會建立乙個matrix matrix matrix new matrix 2 然後呼叫matrix的平移方法進行平移 matrix.posttran...
matrix 解題報告
我們都知道矩陣乘法 給定兩個矩陣a和b,若a是n r的矩陣,b是r m的矩陣,則a b的結果c是乙個n m的矩陣,且c i,j a i,k b k,j 其中1 k r。很顯然,求出每個c i,j 的過程中,我們都做了r次標量乘法。因此,總的標量乘法次數是n m r。矩陣乘法滿足結合律。換句話說,即使...