流程:
實現方式:不斷的重繪中,不斷的重新設置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];