2016-03-21 18 views
0

Ich muss die Gestenbewegung von rechts nach links und umgekehrt (wischen) Warum funktioniert es nicht?Android Geste von rechts nach links

public boolean onTouchEvent(MotionEvent event) 
    { 

     float x = event.getX(); 
     float y = event.getY(); 
     int action = event.getAction(); 
     int edgeFlags = event.getEdgeFlags(); 


     switch (edgeFlags) 

     { 
      case MotionEvent.EDGE_LEFT: 
      sex=3; break; 


      case MotionEvent.EDGE_RIGHT: 
      sex=1; 
       break; 

      case MotionEvent.EDGE_TOP: 
       break; 

      case MotionEvent.EDGE_BOTTOM: 
       break; 

      default: 

       break; 
     } 

return true; 
} 

es mir nicht passt ->How to detect the swipe left or Right in Android?

Antwort

0

mit diesem Ansatz versuchen:

öffentliche abstrakte Klasse CustomGestureListener erweitert GestureDetector.SimpleOnGestureListener Protokollierbare implementiert {

private final View mView; 

public CustomGestureListener(View view){ 
    mView = view; 
} 

@Override 
public boolean onSingleTapConfirmed(MotionEvent e) { 
    mView.onTouchEvent(e); 
    return super.onSingleTapConfirmed(e); 
} 

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

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    if (e1.getX() < e2.getX()) { 
     return onSwipeRight(); 
    } 

    if (e1.getX() > e2.getX()) { 
     return onSwipeLeft(); 
    } 

    return onTouch(); 
} 

public abstract boolean onSwipeRight(); 
public abstract boolean onSwipeLeft(); 
public abstract boolean onTouch(); 

}

Überprüfen Sie this Artikel für das vollständige Quellbeispiel.

+0

Ein Problem mit diesem ist, dass Schleudern sehr empfindlich ist - es ist möglich, eins zu erkennen, wenn Sie Ihren Finger heben, ohne zu wischen. Es basiert auf der Geschwindigkeit der Veränderung. Ich würde auch eine Größenordnung der Veränderung mit einbeziehen, um sicherzustellen, dass eine kleine Bewegung nicht zu einer Affäre wird. –

+0

Ich habe diesen Code getestet und funktioniert gut für mich. –

+0

Sie sind nicht alle Personen und Berührungsereignisse können empfindlich auf Größe und Form der Finger reagieren. In 20% der Fälle bekomme ich Fling-Events, wenn ich einen Finger hebe. Es ist kein schlechter Ansatz, es braucht nur Ergänzungen. –

0

Da Edge-Flags nur zurückgegeben werden, wenn der Benutzer den Daumen vollständig vom Rand des Bildschirms entfernt, was eine Seltenheit ist. Sie müssen diesen Ansatz löschen. Stattdessen erfassen Sie den Punkt, an dem sie ihren Finger ablegen, speichern Sie den Ort und die Uhrzeit. Wenn Sie das Matching-Up-Ereignis erhalten, vergleichen Sie den Standort und die Zeit und stellen Sie sicher, dass es sich um eine größtenteils horizontale Bewegung handelt und in einem ausreichend schnellen Zeitrahmen. Das wäre ein Schlag.

Verwandte Themen