У меня есть следующий 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);
}
}
Я добавляю его в свой вид следующим образом:
view.setOnTouchListener(new BookListener(book, main));
Но при запуске события не запускаются, я отлаживаю его, я вижу, что он вызывается, но 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;
}
}