93 votes

Différence entre OnTouch et OnClick Android

Y a-t-il une différence entre OnTouchListener y OnClickListener ? Je ne pose pas la question du point de vue de la programmation, mais du point de vue de l'expérience utilisateur.

Quelle est la meilleure solution ?

Faut-il mettre en œuvre les deux ?

107voto

PH7 Points 2366

Quelle est la meilleure solution ?

Cela dépend vraiment de vos besoins.

onTouch vous permet d'obtenir un événement de mouvement. Ainsi, vous pouvez faire beaucoup de choses fantaisistes car cela vous aide à séparer l'état de mouvement. Pour n'en citer que quelques-unes :

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Il s'agit d'actions courantes que nous mettons généralement en œuvre pour obtenir le résultat souhaité, par exemple en faisant glisser la vue sur l'écran.

D'autre part, onClick ne vous donne pas grand-chose, si ce n'est la vue avec laquelle l'utilisateur interagit. onClick est un événement complet comprenant la mise au point, la pression et le relâchement. Vous n'avez donc que peu de contrôle sur cet événement. L'avantage est qu'il est très simple à mettre en œuvre.

devons-nous mettre en œuvre les deux ?

Ce n'est pas nécessaire, sauf si vous voulez perturber votre utilisateur. Si vous voulez un simple événement de clic, optez pour onClick . Si vous voulez plus qu'un clic, optez pour onTouch . Faire les deux compliquera le processus.

Du point de vue de l'utilisateur, cela passe inaperçu si l'on met en place onTouch soigneusement pour ressembler à onClick .

3 votes

Si vous avez besoin d'un certain contrôle, optez pour onTouch. Dans la plupart des cas, onClick suffit. Voir la réponse de PH7.

0 votes

Je n'ai pas encore trouvé lequel utiliser. Si j'ai 4 vues, dont 3 nécessitent à la fois un clic et un swipe alors que la 4ème ne nécessite qu'un clic. Je sais que je peux utiliser onTouch uniquement pour les clics ou les glissements pour les 3 premières vues, mais qu'en est-il de la 4ème ? Dois-je implémenter onClick pour la seule vue ou simplement utiliser onTouch puisqu'il est déjà appelé ?

0 votes

Il convient de noter qu'il peut être nécessaire d'utiliser onTouch pour obtenir certains résultats, auquel cas le point de vue de l'utilisateur est réduit à néant. FE, si vous voulez bloquer l'affichage du clavier souple pour pouvoir fournir le vôtre, vous devez le faire via onTouch. TIL onClick ne le fera pas.

24voto

Tom Dignan Points 4065

Un événement "Touch" se produit lorsque quelqu'un pose son doigt sur l'écran. Il est appelé tout au long du mouvement du doigt, vers le bas, vers le bas et vers le haut. Un "clic" ne doit pas nécessairement provenir de l'écran. Il peut s'agir d'une personne qui appuie sur la touche Entrée.

Utilisation OnTouchListener lorsque vous souhaitez recevoir des événements à partir du doigt de quelqu'un sur l'écran.

Utilisation OnClickListener lorsque vous souhaitez détecter des clics.

0 votes

J'ai vu certains développeurs utiliser l'événement tactile pour le bouton, quelle en est la raison ? Je n'ai pas testé sur le téléphone, mais y a-t-il une amélioration des performances ?

1 votes

@NixitPatel Aucune bonne raison ne me vient à l'esprit sans voir leur source.

0 votes

C'est vrai, mais maintenant j'ai trouvé ma réponse... avec l'aide de vous et d'une certaine approche de la particule.

9voto

Lucifer Points 14471
  • onClickListener est utilisé chaque fois qu'un événement de clic est déclenché pour une vue, par exemple : événement de clic pour Button, ImageButton.

  • onTouchListener est utilisé chaque fois que vous souhaitez mettre en œuvre une fonctionnalité de type Touch, par exemple si vous souhaitez obtenir les coordonnées de l'écran où vous avez touché exactement.

D'après la documentation officielle, les deux définitions sont les suivantes

  • onClickListner : Définition d'une interface pour un rappel à invoquer lorsqu'une vue est cliquée.
  • onTouchListener : Définition de l'interface pour un rappel à invoquer lorsqu'un événement tactile est envoyé à cette vue. Le rappel sera invoqué avant que l'événement tactile ne soit transmis à la vue.

1 votes

J'ai vu certains développeurs utiliser l'événement tactile pour le bouton, quelle en est la raison ? Je n'ai pas testé sur le téléphone, mais y a-t-il une amélioration des performances ?

0 votes

Que se passe-t-il si je veux implémenter la pression de l'utilisateur sur le joypad sur Android ? Est-ce qu'il s'agit d'un toucher au lieu d'un clic ? Mais cela aura un effet sur l'état de l'appel pressé... (désolé, s'il y en a dans Android) @Lucifer

8voto

Bassel Mourjan Points 111

Une bonne raison d'utiliser les événements ontouch plutôt que les événements onclick est d'obtenir une réponse plus rapide au clic de l'utilisateur. Alors que l'événement onclick souffre d'un retard dans la réponse et la réalisation de l'action requise. Les événements ontouch sont plus adaptés à la réalisation d'applications web mobiles performantes.

2voto

Rohit Goyal Points 45

OnClickListener - est utilisé pour un usage basique, lorsque nous avons juste besoin d'un clic de la part d'un utilisateur, c'est-à-dire d'un clic sur un bouton, sans glisser ou faire de gestes sur l'écran.

OnTouchListener est essentiellement un contrôle plus fin que OnClickListener. Il exécute une action sur une pression ou un relâchement de l'écran. Il permet à l'utilisateur de combiner un mouvement, une pression vers le bas, une pression vers le haut, un glissement de doigt ou tout autre geste de mouvement sur l'écran.

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