我在右对齐的 FrameLayout 中包含的 ImageView 中有一个方形图像(横向布局)。FrameLayout 设置为 FillParent 宽度和高度,ImageView 设置为 Adjust View Bounds 以便生成的 ImageView 是一个完美的正方形,每一边都是横向布局的高度长度,右对齐。但是,原始图像比这大。我需要获取相对于自身单击 ImageView 的坐标(即 ImageView 的左上角是 0,0,右下角是显示的宽度和高度坐标),以便我可以计算出是否单击的点超过了 ImageView 的中点。我最初使用以下方法获取 ImageView 的大小:
int myImageViewWidth = imageView.getWidth();
int myImageViewHeight = imageView.getHeight();
我创建了一个 OnTouchListener 并在其中使用 event.getX() 和 event.getY(),但这似乎返回相对于图像原始大小的坐标,而不是显示的大小。我还尝试了以下方法:
Matrix m = imageView.getImageMatrix();
float[] values = new float[9];
m.getValues(values);
float relativeX = (event.getX() - values[2]) / values[0];
float relativeY = (event.getY() - values[5]) / values[4];
但这似乎又返回了不准确的坐标。有人可以帮忙吗?