1、实现手势需要通过重写onTouchEvent方法
2、要实现OnTouchListener类,重写OnTouch方法
不管哪一种,都需要将touch事件交给gestureDetector来管理。
private GestureDetector gestureDetector; @Override public void onCreate(Bundle savedInstanceState) { gestureDetector = new GestureDetector(this); } @Override public boolean onTouchEvent(MotionEvent event) { return gestureDetector.onTouchEvent(event); }
注意:如果是在Fragment里面实现手势想在Activity中实现效果,这样的话Fragment碎片中的手势会被自己消费无法传递给Activity,那么这个时候我们就需要重写一个方法来实现将这个手势事件传递给Activity,方法如下:
@Override public boolean dispatchTouchEvent(MotionEvent ev) { boolean handled = gestureDetector.onTouchEvent(ev); if (!handled) { return super.dispatchTouchEvent(ev); } return handled; } 这样就可以实现了。 对于手势我们还需要注意的是他的几种手势事件
onFling--快速的在屏幕上滑动,如果不够快,只有onScroll事件了。
除了onFling方法外,还需要从写以下方法
onDown --放第一时间手指接触到屏幕的时候
onShowPress--按住屏幕,但是未达到onLongPress时间前
onSingleTapUp--onDown之后,离开屏幕。如果有onShowPress、onLongPress事件,则不在响应
onScroll--滑动事件,不管快慢,都会响应
onLongPress--长按事件
上面标红的总是容易被忘记,需要注意,仅仅是自己的总结有其他问题或者疑问可以互相探讨,本人小菜一枚需要大家的鼓励!