PhotoViewAttacher 里面的OnTouch方法里面监听x,y
将监听的x,y绘制到View里面
由于放大之后的View监听的x,y不是真实的x,y,
需要专门对x,y 做校准处理
逻辑:放大之后的View监听到的x,y坐标其实是缩放,移动之后的View,
需要先计算放大之后的真实坐标,先进行移位,原来的坐标 - 移动的坐标,
再去除以缩放的倍数,此时计算出来的坐标就是真实的坐标
在自定义的View 里面OnDraw 里面绘制图像
绘制的时候设置之前移位的Matrix
此时解决问题,缩放之后成功绘制出图像
canvas.concat(this.getSupportMatrix());
public class MatrixUtils {
private static final String TAG = MatrixUtils.class.getSimpleName();
private static float[] values = new float[9];
/**
* Matrix 校准 在放大的状态下的 x, y 都是移位之后的,无法正常定位
*/
public static float formatMatrixX(float clickX,Matrix mMaxrix){
mMaxrix.getValues(values);
return (clickX - values[2])/values[0];
}
public static float formatMatrixY(float clickY,Matrix mMaxrix){
mMaxrix.getValues(values);
return (clickY - values[5])/values[0];
}
}