Diferencia entre OnTouch y OnClick Android

91

¿Hay alguna diferencia entre OnTouchListenery OnClickListener? No pregunto desde el punto de vista de la programación, sino desde el punto de vista de la experiencia del usuario.

¿Cuál es mejor para usar?

¿Necesitamos implementar ambos?

Nixit Patel
fuente

Respuestas:

101

cual es mejor usar?

Realmente depende de sus necesidades.

onTouchle ofrece un evento de movimiento. Por lo tanto, puede hacer muchas cosas elegantes, ya que lo ayuda a separar el estado de movimiento. Sólo para nombrar unos pocos:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Esas son acciones comunes que generalmente implementamos para obtener el resultado deseado, como arrastrar la vista en la pantalla.

Por otro lado, onClickno le da mucho, excepto qué vista interactúa el usuario. onClickes un evento completo que comprende enfocar, presionar y soltar. Entonces, tienes poco control sobre eso. Un lado hacia arriba es que es muy sencillo de implementar.

¿Necesitamos implementar ambos?

No es necesario a menos que quiera meterse con su usuario. Si solo desea un evento de clic simple, hágalo onClick. Si quieres más que un clic, hazlo onTouch. Hacer ambas cosas complicará el proceso.

Desde el punto de vista del usuario, es imperceptible si lo implementa con onTouchcuidado para que se vea como onClick.

PH7
fuente
3
Si necesita algo de control, elija onTouch. Para la mayoría de los casos, onClick servirá. Vea la respuesta de PH7.
drulabs
Todavía estoy tratando de averiguar cuál usar. Si tengo 4 vistas, 3 de las cuales requieren tanto un clic como un deslizamiento mientras que la cuarta solo un clic. Sé que puedo usar onTouch solo como clics o deslizar el dedo para las primeras 3 vistas, pero ¿qué pasa con la cuarta? ¿Debo implementar onClick para una vista o simplemente usar onTouch ya que ya se llama ...?
cjayem13
Debe tenerse en cuenta que puede ser necesario usar onTouch para lograr ciertos resultados, en cuyo caso el punto de vista del usuario será condenado. FE, si desea bloquear la visualización del teclado virtual, para que pueda proporcionar el suyo, debe ser a través de onTouch. TIL onClick no lo hará.
ChiefTwoPencils
24

Un evento de "toque" es cuando alguien pone su dedo en la pantalla. Se llama a través del movimiento del dedo, hacia abajo, hacia arriba y hacia abajo. Ni siquiera es necesario que un "clic" provenga de la pantalla. Podría ser alguien presionando la tecla Enter.

Úselo OnTouchListenercuando desee recibir eventos del dedo de alguien en la pantalla.

Úselo OnClickListenercuando desee detectar clics.

Thomas Dignan
fuente
He visto a un desarrollador que usa un evento táctil para el botón, ¿cuál será el motivo? No lo he probado en el teléfono pero, ¿hay alguna improvisación en la interpretación?
Nixit Patel
1
@NixitPatel No se me ocurre ninguna buena razón sin ver su fuente.
Thomas Dignan
cierto, pero ahora encontré mi respuesta ... con la ayuda de ustedes y un enfoque de partículas. no hay necesidad de preocuparse, gracias por preguntar
Nixit Patel
9
  • onClickListener se utiliza siempre que se genera un evento de clic para cualquier vista, por ejemplo: evento de clic para Button, ImageButton.

  • onTouchListener se utiliza siempre que desee implementar el tipo de funcionalidad táctil, por ejemplo, si desea obtener las coordenadas de la pantalla donde toca exactamente.

del documento oficial, la definición de ambos es:

  • onClickListner: Definición de interfaz para invocar una devolución de llamada cuando se hace clic en una vista.
  • onTouchListener: Definición de interfaz para que se invoque una devolución de llamada cuando se envía un evento táctil a esta vista. La devolución de llamada se invocará antes de que se proporcione el evento táctil a la vista.
Lucifer
fuente
1
He visto a un desarrollador que usa un evento táctil para el botón, ¿cuál será el motivo? No lo he probado en el teléfono pero, ¿hay alguna improvisación en la interpretación?
Nixit Patel
8

Una buena razón para usar eventos ontouch sobre eventos onclick es obtener una respuesta más rápida cuando el usuario hace clic. Donde el evento onclick sufre un retraso en responder y proceder con la acción requerida. Los eventos ontouch son mejores para ofrecer aplicaciones web móviles de alto rendimiento.

Bassel Mourjan
fuente
2

OnClickListener - se usa para un propósito básico, cuando solo necesitamos un clic de un usuario, es decir, hacer clic en un botón, sin arrastrar ni hacer gestos en la pantalla

OnTouchListeneres básicamente un control más ajustado que OnClickListener. Realiza una acción al presionar / soltar en la pantalla.Permite al usuario con una combinación de movimiento, toque hacia abajo, toque hacia arriba, arrastre con el dedo o cualquier gesto de movimiento en la pantalla.

Rohit Goyal
fuente
1

Prefiere usar onTouch. Darle un ejemplo: cuando tiene un ViewPager y un TextView en él. si implementa setOnClickListener en textView, no podrá deslizar el ViewPager cuando toque / deslice el TextView

LiangWang
fuente