Mar*_*los 11 android listener gesture
我有以下GestureListener:
public class BookListener extends SimpleOnGestureListener implements
OnTouchListener {
private LibraryActivity main;
private Book book;
private GestureDetector gesture;
public BookListener(Book book, LibraryActivity main) {
this.main = main;
this.book = book;
gesture = new GestureDetector(main,this);
}
public boolean onDoubleTap(MotionEvent e) {
main.showInfo(book);
return true;
}
public boolean onSingleTapConfirmed(MotionEvent e) {
main.openBook(book.getUrl());
return true;
}
public boolean onDown(MotionEvent evt){
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return gesture.onTouchEvent(event);
}
}
Run Code Online (Sandbox Code Playgroud)
我通过这种方式将它添加到我的视图中:
view.setOnTouchListener(new BookListener(book, main));
Run Code Online (Sandbox Code Playgroud)
但是在运行时,事件不会被触发,我调试它,我看到onDown被调用,但onSingleTapConfirmed或onDoubleTap nevers工作.
怎么了?
我的代码完美无缺:
private class GestureListener extends SimpleOnGestureListener {
private boolean newEvent = true;
@Override
public boolean onDoubleTap(MotionEvent e) {
document.rescale();
refreshImage();
return true;
}
public boolean onDown(MotionEvent evt){
newEvent = true;
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
if (!document.isScaled() && newEvent) {
Vector2D v = new Vector2D(e2).minus(new Vector2D(e1));
if (v.getX() > 60 || v.getX() < -60){
if (v.getX() < 0)
next();
else
previous();
newEvent = false;
}
} else {
img.notifyScroll(-distanceX, -distanceY);
img.invalidate();
}
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
switchSideBar();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
无论是否使用GestureDetector.OnGestureListener,最好的onDown()方法都是实现返回true 的方法。这是因为所有手势均以onDown()消息开头。如果您从onDown(),GestureDetector.SimpleOnGestureListener默认情况下从返回false ,则系统会假定您要忽略其余手势,而其他方法GestureDetector.OnGestureListener从不被调用。这有可能在您的应用程序中引起意外问题。只有onDown()当您真正想忽略整个手势时,才应返回false 。
http://developer.android.com/training/gestures/detector.html#detect