GestureDetector是系统提供的一个监听手势在屏幕操作的类.
使用方法也挺简单,首先我们应该初始化
GestureDetector对象:
mGesture = new GestureDetector(this, new GestureListener());
GestureListener类:
class GestureListener extends SimpleOnGestureListener { //滑动的监听 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { try { if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) return false; if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { //从右向左滑动 return true; } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { //从左向右滑动 return true; } } catch (Exception e) { // nothing } return false; } //单击 @Override public boolean onSingleTapUp(MotionEvent e) { return false; } };
手势判断的常量值:
private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200;
在要使用的地方直接拦截onTouchEvent事件:
@Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub return mGesture.onTouchEvent(event); }