方法:
/**
* 轻触屏幕,由1个MotionEvent ACTION_DOWN触发
*/
@Override
public boolean onDown(MotionEvent e) {
Log.d("test", "onDown");
return false;
}
/**
* 轻触屏幕,尚未松开或拖动,由1个MotionEvent ACTION_DOWN触发
* 和onDown()的区别,强调的是没有松开或者拖动
*/
@Override
public void onShowPress(MotionEvent e) {
Log.d("test", "onShowPress");
}
/**
* 轻触屏幕后松开,由1个MotionEvent ACTION_UP触发
*/
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d("test", "onSingleTapUp");
return false;
}
/**
* 按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
*/
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d("test", "onScroll");
return false;
}
/**
* 长按触摸屏,由多个MotionEvent ACTION_DOWN触发
*/
@Override
public void onLongPress(MotionEvent e) {
Log.d("test", "onLongPress");
}
/**
* 抛的动作,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.d("test", "onFling");
return false;
}
@Override
public boolean onTouch(View v, MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("test", "touch event ACTION_DOWN");
break;
case MotionEvent.ACTION_UP:
Log.d("test", "touch event ACTION_UP");
break;
case MotionEvent.ACTION_MOVE:
Log.d("test", "touch event ACTION_MOVE");
break;
case MotionEvent.ACTION_CANCEL:
Log.d("test", "touch event ACTION_CANCEL");
break;
default:
break;
}
return mGestureDetector.onTouchEvent(ev);
}
onTouch方法中将触摸事件交给手势检查类GestureDetector处理,回调上述方法。
例如:
1. 轻触---->松开
2.轻触(时间比上面稍长)----->松开
3.轻触(长按,比2时间长)------>松开
4.轻触---->拖动----->松开
5.抛的动作
6.抛的动作,滚动未完成,再次抛
5的循环