获取用户触摸的真实x和y坐标

Ste*_*ess 12 android bitmap imageview ontouchlistener

我需要将onTouch事件的X,Y坐标映射到ImageView内的Bitmap 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  
Run Code Online (Sandbox Code Playgroud)

但是我的活动是一个ActionBar活动,所以我在Y轴上的位置有点错误.我试着扣除ActionBar和StatusBar的高度,但这并不总是有效.

奇怪的是,在全屏幕上无论我是否完全缩放我的图像都无关紧要我总是得到正确的坐标,但是对于任何其他活动类型,这都不会正确地映射点.

Min*_*tdh 6

我使用此代码来获取屏幕上的实际触摸轴:

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();
}
Run Code Online (Sandbox Code Playgroud)

希望这也适合你