Différence entre OnTouch et OnClick Android

90

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

Lequel est préférable d'utiliser?

Avons-nous besoin de mettre en œuvre les deux?

Nixit Patel
la source

Réponses:

100

lequel est préférable d'utiliser?

Cela dépend vraiment de vos besoins.

onTouchvous donne un événement de mouvement. Ainsi, vous pouvez faire beaucoup de choses fantaisistes car cela vous aide à séparer l'état de mouvement. Juste pour en nommer quelques-uns:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Ce sont des actions courantes que nous implémentons généralement pour obtenir le résultat souhaité, comme faire glisser la vue sur l'écran.

D'un autre côté, onClickcela ne vous donne pas grand-chose sauf quelle vue l'utilisateur interagit. onClickest un événement complet comprenant la mise au point, la pression et la libération. Donc, vous avez peu de contrôle sur cela. Un côté positif est qu'il est très simple à mettre en œuvre.

devons-nous mettre en œuvre les deux?

Ce n'est pas nécessaire à moins que vous ne vouliez déranger votre utilisateur. Si vous voulez juste un simple événement de clic, optez pour onClick. Si vous voulez plus que cliquer, allez-y onTouch. Faire les deux compliquera le processus.

Du point de vue de l'utilisateur, il est imperceptible si vous mettez en œuvre onTouchsoigneusement pour ressembler onClick.

PH7
la source
3
Si vous avez besoin d'un contrôle, optez pour onTouch. Dans la plupart des cas, onClick fera l'affaire. Voir la réponse de PH7.
drulabs
J'essaie toujours de savoir lequel utiliser. Si j'ai 4 vues, dont 3 nécessitent à la fois un clic et un balayage tandis que la 4e n'est qu'un clic. Je sais que je ne peux utiliser onTouch que sous forme de clics ou de balayage pour les 3 premières vues, mais qu'en est-il de la 4e? Dois-je implémenter onClick pour une vue ou simplement utiliser onTouch car il est déjà appelé ..?
cjayem13
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 doit être damné. FE, si vous souhaitez empêcher l'affichage du clavier virtuel, afin de pouvoir fournir le vôtre, il doit se faire via onTouch. TIL onClick ne le fera pas.
ChiefTwoPencils
24

Un événement «Touch» est lorsque quelqu'un met son doigt sur l'écran. Il est appelé tout au long du mouvement du doigt, vers le bas, la traînée et le haut. Un "clic" n'a même pas besoin de provenir de l'écran. Il peut s'agir de quelqu'un qui appuie sur la touche Entrée.

À utiliser OnTouchListenerlorsque vous souhaitez recevoir des événements du doigt de quelqu'un sur l'écran.

À utiliser OnClickListenerlorsque vous souhaitez détecter des clics.

Thomas Dignan
la source
J'ai vu un développeur utiliser un événement tactile pour le bouton, quelle en sera la raison? Je n'ai pas testé au téléphone mais y a-t-il une improvisation de performance?
Nixit Patel
1
@NixitPatel Aucune bonne raison ne vient à l'esprit sans voir leur source.
Thomas Dignan
c'est vrai, mais maintenant j'ai trouvé ma réponse ... avec l'aide de vous les gars et une approche de particules. pas besoin de s'inquiéter, merci de demander
Nixit Patel
9
  • onClickListener est utilisé chaque fois qu'un événement de clic pour une vue est déclenché, par exemple: événement de clic pour Button, ImageButton.

  • onTouchListener est utilisé chaque fois que vous souhaitez implémenter une fonctionnalité de type Touch, par exemple si vous souhaitez obtenir les coordonnées de l'écran là où vous touchez exactement.

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

  • onClickListner: Définition d'interface pour un rappel à appeler lorsqu'un clic est effectué sur une vue.
  • onTouchListener: Définition d'interface pour un rappel à invoquer lorsqu'un événement tactile est distribué à cette vue. Le rappel sera appelé avant que l'événement tactile ne soit donné à la vue.
Lucifer
la source
1
J'ai vu un développeur utiliser un événement tactile pour le bouton, quelle en sera la raison? Je n'ai pas testé au téléphone mais y a-t-il une improvisation de performance?
Nixit Patel
8

Une bonne raison d'utiliser les événements ontouch sur les événements onclick est d'obtenir une réponse plus rapide lorsque l'utilisateur clique. Lorsque l'événement onclick souffre d'un retard dans la réponse et l'action requise. Les événements ontouch sont plus efficaces pour fournir des applications Web mobiles hautement performantes.

Bassel Mourjan
la source
2

OnClickListener - est utilisé dans un but basique, lorsque nous avons juste besoin d'un clic d'un utilisateur, c'est-à-dire d'un clic sur un bouton, pas de glisser ou de gestes sur l'écran

OnTouchListenerest fondamentalement un contrôle plus précis que OnClickListener. Il effectue et action sur une pression / relâchement sur l'écran Il permet à l'utilisateur avec une combinaison de mouvement, de toucher vers le bas, de toucher vers le haut, de glisser du doigt ou de tout mouvement de mouvement sur l'écran

Rohit Goyal
la source
1

Préférez utiliser onTouch. Donnez-vous un exemple: lorsque vous avez un ViewPager et un TextView dedans. si vous implémentez setOnClickListener sur textView, vous ne pourrez pas faire glisser le ViewPager lorsque vous touchez / glissez sur TextView

LiangWang
la source