我需要将 onTouch 事件的 X、Y 坐标映射到 ImageView 内的位图 X、Y 坐标来执行此操作,我使用以下方法。
然而,这种方法似乎只适用于以下情况:
a) 完全缩放图像(一直放大)
b) 如果我让我的应用程序全屏显示,无论如何都可以工作
final int index = event.getActionIndex();
touchLocation = new float[] {
event.getX(index), event.getY(index)
};
Matrix matrix = new Matrix();
ImageView view = getImageView();
view.getImageMatrix().invert(matrix);
matrix.postTranslate(view.getScrollX(), view.getScrollY());
matrix.mapPoints(touchLocation);
// touchLocation[0] is real x and [1] is real y
但是我的 Activity 是一个 ActionBar Activity ,所以我在 Y 轴上的位置有点错误。我尝试扣除 ActionBar 和 StatusBar 的高度,但这并不总是有效。
奇怪的是,在全屏模式下,无论我是完全放大还是完全缩小图像,我总是计算出正确的坐标,但是对于任何其他 Activity 类型,这将无法正确映射点。
最佳答案
我使用此代码获取屏幕上的实际触摸轴:
PointF p = new PointF(event.getX(), event.getY());
View v = this;// your view
View root = v.getRootView();
while (v.getParent() instanceof View && v.getParent() != root) {
p.y += v.getTop();
p.x += v.getLeft();
v = (View) v.getParent();
}
希望这对你也有用
关于android - 获取用户触摸的真实 x 和 y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460604/