GestureDetector 手势的检测
2017-03-29 本文已影响0人
再见亦是泪丶丶
GestureDetector
手势检查,用于辅助检查用户的单击、滑动、长按、双击等行为。
首先,需要创建一个GestureDetector对象并实现OnGestureListener的接口,如下代码块所示:
GestureDetector gestureDetector = new GestureDetector(this,new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
Log.d(TAG, "onDown: 手指轻轻触摸屏幕的一瞬间");
return false;
}
@Override
public void onShowPress(MotionEvent e) {
Log.d(TAG, "onShowPress: 手指轻轻触摸屏幕,尚未松开或拖动");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d(TAG, "onSingleTapUp: 手指松开");
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.d(TAG, "onScroll: 手指按下屏幕并拖动");
Log.d(TAG, "onScroll: "+distanceX);
Log.d(TAG, "onScroll: "+distanceX);
return false;
}
@Override
public void onLongPress(MotionEvent e) {
Log.d(TAG, "onLongPress: 长按");
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.d(TAG, "onFling: 按下屏幕,快速滑动后松开");
return false;
}
});
//解决长按屏幕后无法拖动的现象
gestureDetector .setIsLongpressEnabled(false);
手势监听的过程有了,但是我们还需要去接管目标View的onTouchEvent方法,在待监听View的onTouchEvent方法中添加如下代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
实际开发过程中,可以不适用GestureDetector,完全可以在View 的onTouchEvent方法中实现所需监听,这个根据个人喜好而定。
tips:如果只是监听滑动相关的,建议在onTouchEvent中实现,如果需要监听双击这种行为的话,就适用GestureDetector。