如何获得在Android的触摸位置?

我需要在android中获取触摸开始位置(X,Y),触摸移动位置和触摸屏幕的结束位置。

@Override public boolean onTouchEvent(MotionEvent event) { int x = (int)event.getX(); int y = (int)event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: } return false; } 

这三种情况是可以对不同types的事件作出反应的,在这个例子中,轻敲或拖动或再次举起手指。

 @Override public boolean onTouch(View v, MotionEvent event) { float x = event.getX(); float y = event.getY(); return true; } 

补充答案

给定一个OnTouchListener

 private View.OnTouchListener handleTouch = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Log.i("TAG", "touched down"); break; case MotionEvent.ACTION_MOVE: Log.i("TAG", "moving: (" + x + ", " + y + ")"); break; case MotionEvent.ACTION_UP: Log.i("TAG", "touched up"); break; } return true; } }; 

设置一些观点:

 myView.setOnTouchListener(handleTouch); 

这将为您提供触摸事件坐标相对于触摸监听器分配给它的视图。 视图的左上angular是(0, 0) 。 如果你将手指放在视图上方,那么y负面的。 如果您将手指移动到视图左侧,则x将为负值。

 int x = (int)event.getX(); int y = (int)event.getY(); 

如果您需要相对于设备屏幕左上angular的坐标,请使用原始值。

 int x = (int)event.getRawX(); int y = (int)event.getRawY(); 

你可以实现一个手势触发器,并在它的onfling事件中从MotionEvent类中获得两个参数。 你可以从他们得到你的x和y坐标。 看看这个post的更多细节

在网格布局上进行手势检测