所以,pinch zoom in android似乎相当容易 - 但我也希望能够在图像超出范围时快速恢复图像,并且这样做最合理的事情似乎是做比如尺度< 1,重新缩放为1.但是,我似乎找不到从图形矩阵检索比例的好方法。
一种可能的解决方案可能是使用矩阵的mapPoints函数映射一个点并查看它最终的位置,但除了诡计之外,这对我来说只是感觉丑陋和间接。有没有更好的解决方案从Android图形矩阵中检索比例?
答案 0 :(得分:49)
float[] f = new float[9];
matrix.getValues(f);
float scaleX = f[Matrix.MSCALE_X];
float scaleY = f[Matrix.MSCALE_Y];
可能就是你要找的东西。给出的值如下:
0:缩放X
1:偏斜X
2:翻译X
3:缩放Y
4:倾斜Y
5:翻译Y
6:观点0
7:观点1
8:透视2
答案 1 :(得分:0)
这是记录矩阵内容的简单方法:
private void logMatrix(String label, Matrix matrix) {
float[] matrixVals = new float[9];
matrix.getValues(matrixVals);
Log.e(TAG, String.format("%s: %s\nscale (x,y) = (%f, %f)\ntranslate (x,y) = (%f, %f)\nskew (x,y) "
+ "= (%f, %f)\nperspective-0 = %f\nperspective-1 = %f\nperspective-2 = %f",
label, matrix, matrixVals[Matrix.MSCALE_X], matrixVals[Matrix.MSCALE_Y],
matrixVals[Matrix.MTRANS_X], matrixVals[Matrix.MTRANS_Y],
matrixVals[Matrix.MSKEW_X], matrixVals[Matrix.MSKEW_Y],
matrixVals[Matrix.MPERSP_0], matrixVals[Matrix.MPERSP_1], matrixVals[Matrix.MPERSP_2]));
}