Diferença entre OnTouch e OnClick Android

90

Existe alguma diferença entre OnTouchListenere OnClickListener? Não estou perguntando do ponto de vista da programação, mas do ponto de vista da experiência do usuário.

Qual é melhor usar?

Precisamos implementar ambos?

Nixit Patel
fonte

Respostas:

100

qual é melhor usar?

Realmente depende de sua necessidade.

onTouchdá a você Motion Event. Assim, você pode fazer muitas coisas sofisticadas, pois isso ajuda a separar o estado de movimento. Apenas para citar alguns:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Essas são ações comuns que geralmente implementamos para obter o resultado desejado, como arrastar a visualização na tela.

Por outro lado, onClicknão oferece muito, exceto qual visualização o usuário interage. onClické um evento completo que compreende focalizar, pressionar e liberar. Portanto, você tem pouco controle sobre isso. Por outro lado, é muito simples de implementar.

precisamos implementar ambos?

Não é necessário, a menos que você queira bagunçar o seu usuário. Se você deseja apenas um evento de clique simples, vá para onClick. Se você quer mais do que clicar, vá em frente onTouch. Fazer as duas coisas complicará o processo.

Do ponto de vista do usuário, é imperceptível se você implementar com onTouchcuidado para parecer onClick.

PH7
fonte
3
Se você precisar de algum controle, vá para onTouch. Na maioria dos casos, onClick é o suficiente. Veja a resposta do PH7.
drulabs
Ainda estou tentando descobrir qual usar. Se eu tiver 4 visualizações, 3 das quais requerem um clique e um deslize, enquanto a 4ª requer apenas um clique. Eu sei que posso usar o onTouch apenas como cliques ou deslize para as três primeiras visualizações, mas e a quarta? Devo implementar onClick para uma visualização ou apenas usar onTouch, pois já é chamado ..?
cjayem13,
Deve-se notar que pode ser necessário usar o onTouch para obter certos resultados, caso em que o ponto de vista do usuário se danifique. FE, se você deseja bloquear a exibição do teclado virtual, para poder fornecer o seu próprio, deve ser via onTouch. TIL onClick não fará isso.
ChiefTwoPencils
24

Um evento de "Toque" ocorre quando alguém coloca o dedo na tela. É chamado ao longo do movimento do dedo, para baixo, arrastar e subir. Um "clique" nem precisa sair da tela. Pode ser alguém pressionando a tecla Enter.

Use OnTouchListenerquando quiser receber eventos do dedo de alguém na tela.

Use OnClickListenerquando quiser detectar cliques.

Thomas Dignan
fonte
Já vi algum desenvolvedor usando evento de toque para o botão, qual será o motivo disso? Não testei no telefone, mas existe alguma improvisação de performance?
Nixit Patel
1
@NixitPatel Nenhum bom motivo vem à mente sem ver sua fonte.
Thomas Dignan
verdade, mas agora encontrei minha resposta ... com a ajuda de vocês e alguma abordagem de partícula. não precisa se preocupar, obrigado por perguntar
Nixit Patel
9
  • onClickListener é usado sempre que um evento click para qualquer visão é gerado, digamos, por exemplo: evento click para Button, ImageButton.

  • onTouchListener é usado sempre que você deseja implementar o tipo de funcionalidade Touch, digamos, por exemplo, se você deseja obter as coordenadas da tela onde você toca exatamente.

do documento oficial, a definição de ambos são:

  • onClickListner: Definição de interface para um retorno de chamada a ser invocado quando uma visualização é clicada.
  • onTouchListener: Definição de interface para um retorno de chamada a ser invocado quando um evento de toque é despachado para esta visualização. O retorno de chamada será invocado antes que o evento de toque seja fornecido à visualização.
Lúcifer
fonte
1
Tenho visto algum desenvolvedor usando evento de toque para o botão, qual será o motivo disso? Não testei no telefone, mas existe alguma improvisação de performance?
Nixit Patel
8

Um bom motivo para usar eventos ontouch em vez de eventos onclick é obter uma resposta mais rápida ao clicar do usuário. Onde o evento onclick sofre um atraso para responder e prosseguir com a ação necessária. Os eventos ontouch são melhores para fornecer aplicativos da web móvel de alto desempenho.

Bassel Mourjan
fonte
2

OnClickListener - é usado para uma finalidade básica, quando precisamos apenas de um clique de um usuário, ou seja, clicar em um botão, sem arrastar ou fazer gestos na tela

OnTouchListeneré basicamente um controle mais ajustado do que OnClickListener. Ele executa uma ação ao pressionar / soltar na tela. Permite ao usuário uma combinação de movimento, toque para baixo, toque para cima, arraste com o dedo ou qualquer gesto de movimento na tela

Rohit Goyal
fonte
1

Prefira usar o onTouch. Dê um exemplo: quando você tem um ViewPager e um TextView nele. se você implementar setOnClickListener em textView, não será capaz de deslizar o ViewPager ao tocar / deslizar no TextView

LiangWang
fonte