我正在捕获一个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()返回左边|视图相对于其父级的顶部位置.
尝试VIEW.getLeft()| getTop()返回左边|视图相对于其父级的顶部位置.
float x= e.getX() - canvasView.getLeft(); float y= e.getY() - canvasView.getTop();