Je veux que mon application reconnaisse lorsqu'un utilisateur glisse de droite à gauche sur l'écran du téléphone.
Comment faire ça?
android
swipe
gesture-recognition
endryha
la source
la source
Réponses:
OnSwipeTouchListener.java :
Usage:
la source
OnSwipeTouchListener
celui qui reçoit un contexte car ce constructeur deGestureDetector
est obsolète depuis l'API niveau 3, et instancier leGestureDetector
dans ce constructeur.onTouch
à laOnSwipeTouchListener
définition, sinon mon IDE affichera l'erreur "accès à un membre privé"Ce code détecte les balayages gauche et droit, évite les appels d'API obsolètes et propose d'autres améliorations par rapport aux réponses précédentes.
Utilisez-le comme ceci:
la source
setOnTouchListener
(généralementonCreate
).context
est lethis
pointeur (sauf si vous créez un fragment).Fragment.getActivity()
.Si vous devez également traiter les événements de clic, voici quelques modifications:
Et exemple d'utilisation:
la source
Développant la réponse de Mirek, pour le cas où vous souhaitez utiliser les gestes de balayage dans une vue de défilement. Par défaut, l'écouteur tactile pour la vue de défilement est désactivé et l'action de défilement ne se produit donc pas. Pour résoudre ce problème, vous devez remplacer la
dispatchTouchEvent
méthode de laActivity
et renvoyer la version héritée de cette méthode une fois que vous avez terminé avec votre propre écouteur.Afin d'apporter quelques modifications au code de Mirek: j'ajoute un getter pour le
gestureDetector
dans leOnSwipeTouchListener
.Déclarez l'
OnSwipeTouchListener
intérieur de l'activité comme un champ à l'échelle de la classe.Modifiez le code d'utilisation en conséquence:
Et remplacez la
dispatchTouchEvent
méthode à l'intérieurActivity
:Les actions de défilement et de balayage devraient maintenant fonctionner.
la source
Afin d'avoir
Click Listener
,DoubleClick Listener
,OnLongPress Listener
,Swipe Left
,Swipe Right
,Swipe Up
,Swipe Down
sur simple queView
vous devezsetOnTouchListener
. c'est à dire,Pour cela, vous avez besoin d'une
OnSwipeTouchListener
classe qui implémenteOnTouchListener
.la source
Vous n'avez pas besoin de calculs compliqués. Cela peut être fait simplement en utilisant l'
OnGestureListener
interface de laGestureDetector
classe.À l'intérieur de la
onFling
méthode, vous pouvez détecter les quatre directions comme ceci:MyGestureListener.java
:usage:
la source
velocityX
etvelocityY
dans laonFling
méthode. bien que vous puissiez expérimenter pour voir quelle valeur correspond le mieux à vos besoins, mais le nombre final serait universel.Utilisez SwipeListView et laissez-le gérer la détection des gestes pour vous.
la source
La version Kotlin de @Mirek Rusin est ici:
OnSwipeTouchListener.kt:
Usage:
le
open
mot clé était le point pour moi ...la source
Pour ajouter également un onClick, voici ce que j'ai fait.
J'utilise des fragments, donc j'utilise getActivity () pour le contexte. C'est ainsi que je l'ai implémenté - et cela fonctionne.
la source
La méthode de @Edward Brey fonctionne très bien. Si quelqu'un souhaite également copier et coller les importations pour le
OnSwipeTouchListener
, les voici:la source
Une petite modification de la réponse de @Mirek Rusin et maintenant vous pouvez détecter les balayages multitouch. Ce code est sur Kotlin:
Où Gesture.SWIPE_RIGHT et d'autres sont un identificateur d'entier unique de geste que j'utilise pour détecter un type de geste plus tard dans mon activité:
Donc, vous voyez que le geste est une variable entière qui contient la valeur que j'ai passée auparavant.
la source
Ma solution est similaire à celles ci-dessus, mais j'ai résumé la gestion des gestes dans une classe abstraite
OnGestureRegisterListener.java
, qui comprend les gestes de balayage , de clic et de clic long .OnGestureRegisterListener.java
Et utilisez-le comme ça. Notez que vous pouvez également facilement passer votre
View
paramètre.la source
J'ai fait des choses similaires, mais pour les balayages horizontaux uniquement
Et puis il peut être utilisé pour afficher les composants
la source
Cette question a été posée il y a de nombreuses années. Maintenant, il y a une meilleure solution: SmartSwipe: https://github.com/luckybilly/SmartSwipe
le code ressemble à ceci:
la source
@Mirek Rusin answeir est très bon. Mais, il y a un petit bug et une correction est requise -
Quelle différence? Nous définissons result = true, uniquement si nous avons vérifié que tous les requrinments (SWIPE_THRESHOLD et SWIPE_VELOCITY_THRESHOLD sont corrects). Ceci est important si nous éliminons le balayage si certains des critères ne sont pas atteints, et nous devons faire un smth dans la méthode onTouchEvent de OnSwipeTouchListener!
la source
Voici un code Android simple pour détecter la direction des gestes
Dans
MainActivity.java
etactivity_main.xml
, écrivez le code suivant:la source
la source
Si vous souhaitez afficher certains boutons avec des actions lorsqu'un élément de la liste est glissé, de nombreuses bibliothèques sur Internet ont ce comportement. J'ai implémenté la bibliothèque que j'ai trouvée sur internet et j'en suis très satisfait. Il est très simple à utiliser et très rapide. J'ai amélioré la bibliothèque d'origine et j'ai ajouté un nouvel écouteur de clic pour le clic d'élément. J'ai également ajouté une bibliothèque de polices impressionnantes ( http://fortawesome.github.io/Font-Awesome/ ) et maintenant vous pouvez simplement ajouter un nouveau titre d'élément et spécifier le nom de l'icône à partir de la police impressionnante.
Voici le lien github
la source
la source
l'utilisation de la réponse d' Edward Brey dans Kotlin
la source