7

dieses erkenntGestureDetector.SimpleOnGestureListener. Wie kann ich ein ACTION_UP-Ereignis erkennen?

mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { 

     @Override 
     public boolean onSingleTapUp(MotionEvent e) { 
      return true; 
     } 

Verwendung Nur für einzelne Antippereignis heißt schnelles Tippen und loslassen. Wenn ich halte und dann loslassen, wird onSingleTapUp nicht aufgerufen.

Ich bin auf der Suche nach einem Bewegungsereignis, das ACTION_UP nach dem Niederhalten ist.

ich onShowPress sah die, wenn sie aufgerufen wird, der Benutzer eine nach unten Aktion ausführt, aber dann war ich nicht sicher, wie ein ACTION_UP während in onShowPress zu erkennen.

Beachten Sie, dass dies für eine recycler view klicken Sie auf Elemente. Im Moment kann ich einfach auf ein Element tippen, das funktioniert, aber wenn ich es halte und dann loslasse, wird es nicht aufgerufen.

+0

Haben Sie Ihr Problem gelöst? – Eselfar

+1

@Eselfar Hallo, ich habe dieses spezielle Problem nicht gelöst, sondern eine andere Lösung verwendet, um mein Problem zu lösen, nämlich einen OnClickListener auf der itemView selbst zu setzen. –

Antwort

1

können Sie versuchen, die folgenden in Ihrem onSingleTapUp Methode:

@Override 
public boolean onSingleTapUp(MotionEvent e) { 
    if(e.getAction() == MotionEvent.ACTION_UP){ 

    // Do what you want 
    return true; 
    } 
    return false; 
} 
+0

Hallo, Entschuldigung für die späte Antwort. Ich habe den Code ausprobiert, aber es hat nicht funktioniert. Ich kann immer noch nur einen Gegenstand einzeln tippen. Ich werde bald Code schreiben –

0

Sie die Ansicht, Unterklasse und onTouchEvent außer Kraft setzen. Auf diese Weise können Sie die verschiedenen Aktionen beobachten, bevor der Gestenerkenner sie handhabt.

@Override 
public boolean onTouchEvent(MotionEvent e) { 

    int action = e.getActionMasked(); 
    if (action == MotionEvent.ACTION_UP) { 
     // do something here 
    } 

    return mGestureDetector.onTouchEvent(e); 
}