問(wèn)題描述
使用方法 view.setRotation(float rotation) 方法旋轉(zhuǎn) view 導(dǎo)致其內(nèi)部坐標(biāo)系也發(fā)生旋轉(zhuǎn),再之后執(zhí)行 其自身的 touchEvent 拖拽移動(dòng)時(shí)出現(xiàn)極其鬼畜亂飄的問(wèn)題嫁审,經(jīng)查證跋炕,是 touchEvent中的 event.getX() 與 event.getY() 返回了旋轉(zhuǎn)后坐標(biāo)系的坐標(biāo)導(dǎo)致,解決方案基本確定了采用轉(zhuǎn)換坐標(biāo)到旋轉(zhuǎn)前的坐標(biāo)系的解決方案律适。
解決方案
核心代碼:
private float[] coordinateTransformation(float[] xy, int r) {
float[] result = new float[2];
float x1 = xy[0];
float y1 = xy[1];
result[0] = (int) ((x1) * Math.cos(Math.PI / 180.0 * r) - (y1) * Math.sin(Math.PI / 180.0 * r));
result[1] = (int) ((x1) * Math.sin(Math.PI / 180.0 * r) + (y1) * Math.cos(Math.PI / 180.0 * r));
return result;
}
參數(shù):(int[event.getX(),event.getY()] , rotation)
int[event.getX(),event.getY()]:旋轉(zhuǎn)后的錯(cuò)誤坐標(biāo)辐烂;
rotation:旋轉(zhuǎn)度數(shù)遏插。
返回,原坐標(biāo)系x,y集合纠修。
解決完成胳嘲。