如何获得在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;
}
这三种情况可以让你对不同类型的事件作出反应,在这个例子中,轻敲或拖动或再次举起手指。
@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);
这会为您提供触摸事件坐标相对于触摸侦听器分配给它的视图。 视图的左上角是(0, 0)
。 如果您将手指放在视图上方,则y
将为负值。 如果将手指移动到视图左侧,则x
将为负值。
int x = (int)event.getX();
int y = (int)event.getY();
如果您需要相对于设备屏幕左上角的坐标,请使用原始值。
int x = (int)event.getRawX();
int y = (int)event.getRawY();