GestureDetector是view包下的一个子类,用于来监听手指在VIEW上得各种动作。当我们需要监听手指在屏幕上得按下、按压、A点到B点、滑动等各种手势监听的时候就可以用到它了。
主要方法
手指按下去的时候
boolean onDown(MotionEvent e);
按压事件,onDown后调用。
void onShowPress(MotionEvent e);
手指抬起
boolean onSingleTapUp(MotionEvent e);
手指的移动事件
e1按下去的第一个点
e2移动的点
distanceX 距离上一次x的距离
distanceY 距离上一次y的距离
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);
长按
onLongPress(MotionEvent e)
a点到b点滑动触发的事件
e1按下去的点
e2滑动后抬起来的点
velocityX 每秒x滑动的像素
velocityY 每秒y滑动的像素
onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
使用
private GestureDetector mDetector;
...
省略初始化代码
mDetector=new GestureDetector(getContext(),new MyGestureListener());
...
//或者onTouchEvent
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
mDetector.onTouchEvent(event);
return true;
}
public static class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
return super.onDown(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return super.onFling(e1, e2, velocityX, velocityY);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return super.onScroll(e1, e2, distanceX, distanceY);
}
}
网友评论