我正在捕捉一个MotionEvent
在 Android 设备上长按SurfaceView
用一个GestureListener
。然后我需要翻译的坐标MotionEvent
到画布坐标,我可以从中生成自定义地图坐标(不是 Google 地图)。
根据我所读到的内容,我认为MotionEvent e
, e.getX()
and 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
}
}
提前致谢!
Edit:这与屏幕尺寸/分辨率/深度和画布的 Rect 对象有关吗?
您可以尝试使用MotionEvent.getRawX()/getRawY()
方法而不是getX()/getY()
.
// get the surfaceView's location on screen
int[] loc = new int[2];
surfaceView.getLocationOnScreen(loc);
// calculate delta
int left = e.getRawX()-loc[0];
int top = e.getRawY()-loc[1];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)