Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Detector de gestos no funciona

Tengo el siguiente 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); } } 

Lo agrego a mi View de esta manera:

  • Seguimiento correcto de referencias de instalación en Play Store
  • ¿Cómo detectar el movimiento de un dispositivo Android?
  • GooglePlayServicesUtil.getErrorDialog es nulo
  • Android, envío de XML a través de HTTP POST (SOAP)
  • ¿Cómo puedo eliminar la línea de margen derecha en Android Studio (Intellij)?
  • Creación de un efecto de rociado en el tacto extraer en android
  •  view.setOnTouchListener(new BookListener(book, main)); 

    Pero cuando se ejecuta, los eventos no se activan, depurar, veo que el onDown se llama, pero onSingleTapConfirmed o onDoubleTap nevers funciona.

    ¿Qué pasa?

    Tengo este código con obras perfectamente:

      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; } } 

  • Cómo llenar el color en la imagen en el área en particular?
  • Theme.Holo.Light.DarkActionBar en Honeycomb
  • Native crash en /system/lib/libart.so
  • Android 2.1: ¿Cómo puedo consultar el valor RSSI de una conexión Bluetooth existente?
  • Firebase Crash Reporting error: la aplicación cliente com.xxxx está bloqueada
  • Hoy es día n del año
  • 3 Solutions collect form web for “Detector de gestos no funciona”

    onDown() debe devolver true incluso si no desea reaccionar a ese evento, o bien hará que el detector descarte cualquier evento siguiente y por lo tanto cualquier gesto.

    Si utiliza o no GestureDetector.OnGestureListener , es recomendable implementar un método onDown() que devuelva true. Esto se debe a que todos los gestos comienzan con un mensaje onDown() . Si devuelve false de onDown() , como GestureDetector.SimpleOnGestureListener hace de forma predeterminada, el sistema asume que desea ignorar el resto del gesto y los otros métodos de GestureDetector.OnGestureListener nunca se llaman. Esto tiene el potencial de causar problemas inesperados en tu aplicación. La única vez que debe devolver false de onDown() es si realmente desea ignorar un gesto entero.

    http://developer.android.com/training/gestures/detector.html#detect

     [view].setLongClickable(true); 

    Esto debe ser llamado primero.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.