android launcher滑屏動畫分析

流程:



實現方式:不斷的重繪中,不斷的重新設置Matrix和Canvas,來實現動畫。

 

Matrix幾種函數介紹:

(1)setPolyToPoly(float[]src, int srcIndex, float[]dst, int dstIndex, int pointCount)
此函數表示從src到dst的點對點的映射,例如點(0,0),(10,0),(10,10),(0,10)四點爲src = {0,0,10,0,10,10,0,10},表示一個正方形,點(0,0),(6,2),(6,8),(0,10)四點爲dst={0,0,6,2,6,8,0,10},表示一個梯形,
當從src到dst映射時,圖像就從一個正方形變爲一個梯形
“神奇大門”的例子

float[] src ={0.f , 0.f, 320f , 0.f, 320f, 480f, 0.f , 480f};

               float[] dst ={0.f , 0.f, 320f , 0.f, 320f, 480f, 0.f , 480f};

               float scale =1.5f;

               float detalY =Math.abs(mTotalDetalX * scale);

               dst[2] = dst[4] = 320.f - Math.abs(mTotalDetalX);

               dst[3] = detalY * 0.5f;

               dst[5] = 480f - dst[3];

                matrix.setPolyToPoly(src,0, dst, 0, src.length >>1);
另,關於此函數的用法,APIDemos上有相關的例子。
(2)setRotate(float degrees, float px, float py)和setScale(float degrees, float sx, float sy)
setRotate以點(px,py)來旋轉角度degrees, setScale是長寬按比例sx和sy縮放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章