我正在捕获一个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();