如何在Android中正确翻译像素坐标到画布坐标?

前端之家收集整理的这篇文章主要介绍了如何在Android中正确翻译像素坐标到画布坐标?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在捕获一个MotionEvent,在 Android SurfaceView中使用GestureListener进行长时间的点击.然后,我需要将MotionEvent的坐标转换为画布坐标,从而可以生成自定义地图坐标(而不是Google地图).

从我所看到的,我拿到MotionEvent e,e.getX()和e.getY()获得像素坐标.如何将这些坐标转换为SurfaceView的画布坐标?

这是我的GestureListener,用于聆听长时间的点击:

/**
* Overrides touch gestures not handled by the default touch listener
*/
private class GestureListener extends GestureDetector.SimpleOnGestureListener {

  @Override
  public void onLongPress(MotionEvent e) {
     Point p = new Point();
     p.x =  (int) e.getX();
     p.y = (int) e.getY();
     //TODO translate p to canvas coordinates
  }
}

提前致谢!

编辑:
这是否与屏幕尺寸/分辨率/深度以及画布的Rect对象有关?

解决方法

如果我明白了,你可以在表面视图中看到一个画布视图.如果是这样
尝试VIEW.getLeft()| getTop()返回左边|视图相对于其父级的顶部位置.
float x= e.getX() - canvasView.getLeft();
float y= e.getY() - canvasView.getTop();

猜你在找的Android相关文章