Я расширяю класс от SimpleOnGestureListener
, чтобы обнаружить все события onScroll
, и он регистрирует все события onScroll
, если я один раз коснусь экрана. Но когда я дважды нажимаю экран, а затем прокручиваю, событие onScroll
будет заменено на onDoubleTapEvent
, а onScroll
не вызывается. Я попытался вернуть false
в onDoubleTap
и onDoubleTapEvent
, но он не работает. Класс демонстрируется следующим образом.Android - SimpleOnGestureListener onDoubleTapEvent потребляет все событие onScroll
public class ScrollGestureListener extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
System.out.println("onScroll");
// Do something here
return true;
}
@Override
public void onLongPress(MotionEvent e) {
System.out.println("onLongPress");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
System.out.println("onSingleTapUp");
return super.onSingleTapUp(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
System.out.println("onFling");
return super.onFling(e1, e2, velocityX, velocityY);
}
@Override
public void onShowPress(MotionEvent e) {
System.out.println("onShowPress");
super.onShowPress(e);
}
@Override
public boolean onDown(MotionEvent e) {
System.out.println("onDown");
return super.onDown(e);
}
@Override
public boolean onDoubleTap(MotionEvent e) {
System.out.println("onDoubleTap");
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
System.out.println("onDoubleTapEvent");
return super.onDoubleTapEvent(e);
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
System.out.println("onSingleTapConfirmed");
return super.onSingleTapConfirmed(e);
}
}
И выход Logcat, если я дважды касаюсь, а затем прокрутку, будет выглядеть следующим образом.
01-06 16:01:33.268: I/System.out(10693): onDown
01-06 16:01:33.268: I/System.out(10693): onDown
01-06 16:01:33.318: I/System.out(10693): onSingleTapUp
01-06 16:01:33.459: I/System.out(10693): onDoubleTap
01-06 16:01:33.459: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.459: I/System.out(10693): onDown
01-06 16:01:33.459: I/System.out(10693): onDown
01-06 16:01:33.519: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.529: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.569: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.599: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.619: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.629: I/System.out(10693): onShowPress
01-06 16:01:33.629: I/System.out(10693): onShowPress
01-06 16:01:33.649: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.679: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.699: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.719: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.739: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.749: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.769: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.779: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.809: I/System.out(10693): onDoubleTapEvent
01-06 16:01:33.819: I/System.out(10693): onDoubleTapEvent
Есть ли способ исправить это? Как отключить двойной кран? Заранее спасибо!