497 votes

Android : Comment gérer les droit à des gestes de balayage gauche

Je veux que mon application à reconnaître lorsqu’un utilisateur passe de droite à gauche sur l’écran du téléphone.

Comment faire cela ?

916voto

Mirek Rusin Points 5880

OnSwipeTouchListener.java:

Utilisation :

224voto

Edward Brey Points 8771

Ce code détecte gauche et droite glisse, évite les appels d’API obsolètes et a autres améliorations diverses au fil des réponses précédentes.

Utilisez-le comme ceci :

56voto

ruX Points 805

Si vous avez besoin également de traiter les événements ici click quelques modifications :

Et exemple d’utilisation :

31voto

agunal Points 218

L'expansion de Mirek réponse, pour le cas où vous souhaitez utiliser les gestes de balayage à l'intérieur d'un défilement de l'affichage. Par défaut, la touche écouteur pour le défilement de l'affichage obtenir handicapées et, par conséquent, faire défiler l'action ne se produise pas. Afin de résoudre ce problème, vous devez remplacer l' dispatchTouchEvent méthode de Activity et le retour de la version héritée de cette méthode après vous avez terminé avec votre propre écouteur.

Afin de faire quelques modifications à Mirek code: - Je ajouter un getter pour l' gestureDetector dans la OnSwipeTouchListener.

public GestureDetector getGestureDetector(){
    return  gestureDetector;
}

Déclarer l' OnSwipeTouchListener à l'intérieur de l'Activité en classe à l'échelle du champ.

OnSwipeTouchListener onSwipeTouchListener;

Modifier l'utilisation de code en conséquence:

onSwipeTouchListener = new OnSwipeTouchListener() {
    public void onSwipeTop() {
        Toast.makeText(MyActivity.this, "top", Toast.LENGTH_SHORT).show();
    }
    public void onSwipeRight() {
        Toast.makeText(MyActivity.this, "right", Toast.LENGTH_SHORT).show();
    }
    public void onSwipeLeft() {
        Toast.makeText(MyActivity.this, "left", Toast.LENGTH_SHORT).show();
    }
    public void onSwipeBottom() {
        Toast.makeText(MyActivity.this, "bottom", Toast.LENGTH_SHORT).show();
    }
});

imageView.setOnTouchListener(onSwipeTouchListener);

Et remplacer l' dispatchTouchEvent méthode de Activity:

@Override
    public boolean dispatchTouchEvent(MotionEvent ev){
        swipeListener.getGestureDetector().onTouchEvent(ev); 
            return super.dispatchTouchEvent(ev);   
    }

Maintenant, à la fois de défilement et faites glisser les actions doivent travailler.

10voto

Edward Brey Points 8771

Utiliser SwipeListView et le laisser gérer la détection de mouvement pour vous.

Screenshot

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X