如何获得在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的更多细节
在网格布局上进行手势检测