使用GestureDetector或者onTouchEvent建议:
判断滑动的时候使用onTouchEvent 判断双击的情况下使用GestureDetector
public class ViewBaseKnowledge extends AppCompatActivity implements GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener{
GestureDetector gestureDetector;
private static final String TAG = "ViewBaseKnowledge";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_base_knowledge);
gestureDetector=new GestureDetector(this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
/*switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
Log.e(TAG, "onTouchEvent: ACTION DOWN" );
break;
case MotionEvent.ACTION_MOVE:
Log.e(TAG, "onTouchEvent: ACTION_MOVE" );
break;
case MotionEvent.ACTION_UP:
Log.e(TAG, "onTouchEvent: ACTION_UP" );
break;
}*/
return super.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
Log.e(TAG, "手指轻触屏幕的瞬间" );
return false;
}
@Override
public void onShowPress(MotionEvent e) {
Log.e(TAG, "轻触屏幕尚未松开或者是拖动" );
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.e(TAG, "单击行为" );
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.e(TAG, "按下屏幕并且拖动" );
return false;
}
@Override
public void onLongPress(MotionEvent e) {
Log.e(TAG, "长按屏幕" );
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.e(TAG, "快速的滑动" );
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Log.e(TAG, "严格的单击行为" );
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.e(TAG, "双击 两次连续单击组成" );
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
Log.e(TAG, "发生了双击行为" );
return false;
}
}