您的位置:首页 > 移动开发 > Android开发

Android GestureDetector手势识别的使用

2017-07-13 10:18 337 查看
1  实例化GestureDetector,传入的参数是context和onGestureListener

mGestureDetector = new GestureDetector(this,new MyGestureDectorListener());


2 写一个类MyGestureDetectorListener实现onGestureListener接口,实现里面的各个抽象方法

public class MyGestureDectorListener implements GestureDetector.OnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
//刚刚手指接触到触摸屏的那一刹那,就是触的那一下。
Log.d("sjx","onDown");
return true;
}

@Override
public void onShowPress(MotionEvent e) {
//手指按在触摸屏上,它的时间范围在按下起效,在长按之前。
Log.d("sjx","onShowPress");

}

@Override
public boolean onSingleTapUp(MotionEvent e) {
//手指离开触摸屏的那一刹那。
Log.d("sjx","onSingleTapUp");
return false;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
// 手指在触摸屏上滑动。
Log.d("sjx","onScroll");
return false;
}

@Override
public void onLongPress(MotionEvent e) {
//手指按在持续一段时间,并且没有松开。
Log.d("sjx","onLongPress");

}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//手指在触摸屏上迅速移动,并松开的动作。
Log.d("sjx","onFling");
return false;
}
}


在GestureDetector中有个对onGestureListener的空实现SimpleOnGestureListener类,并且这个类同样实现了OnDoubleTapListener,OnContextClickListener,提供了双击的监听事件,我们可以直接继承这个类,然后实现某几个需要的方法。

3 若是对Activity界面做手势识别,直接在Activity中的onTouchEvent方法中:

public boolean onTouchEvent(MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}

4 经过测试:

1)轻点一下activity会调用 onDown --> onSingleTapUp

2)稍微长一点的点击(介于轻点和长按之间的点击)会调用 onDown --> onShowPress -->onSingleTapUp

3)长按 会调用 onDown -->onShowPress -->onLongPress

4)在Activity上滑动,并且在滑动的终点时手指没有立即离开屏幕  onDown -->onShowPress -->onScroll(多个)

5)在Activity上滑动,并且在滑动的终点时手指迅速离开屏幕 onDown --> onShowPress --> onScroll (多个)-->onFling

6)在Activity上迅速滑一下会调用 onDown -->onScroll(多个)-->onFling
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: