3 回答
TA贡献1775条经验 获得超11个赞
这至少对我来说适用于API 10+:
final float[] getPointerCoords(ImageView view, MotionEvent e)
{
final int index = e.getActionIndex();
final float[] coords = new float[] { e.getX(index), e.getY(index) };
Matrix matrix = new Matrix();
view.getImageMatrix().invert(matrix);
matrix.postTranslate(view.getScrollX(), view.getScrollY());
matrix.mapPoints(coords);
return coords;
}
TA贡献1828条经验 获得超4个赞
除了考虑由于填充而产生的偏移量(边距是布局的一部分,它是视图外部的空间,不必考虑),如果缩放图像,则可以获取图像矩阵(ImageView.getImageMatrix())来缩放坐标。
编辑:您可以获取x / y比例因子和转换量,获取值数组并使用相应的索引常量:
float[] values;
matrix.getValues(values);
float xScale = values[Matrix.MSCALE_X];
请注意,翻译不包括填充,您仍然需要单独考虑。当有一些“空白”空间时,例如在FIT_CENTER缩放中使用转换。
- 3 回答
- 0 关注
- 390 浏览
添加回答
举报