Różnica między OnTouch i OnClick Android

91

Czy jest jakaś różnica między OnTouchListeneri OnClickListener? Nie pytam z punktu widzenia programowania, ale z punktu widzenia User Experience.

Który z nich jest lepszy w użyciu?

Czy musimy wdrożyć oba?

Nixit Patel
źródło

Odpowiedzi:

101

który z nich jest lepszy w użyciu?

To naprawdę zależy od twoich wymagań.

onTouchdaje zdarzenie ruchu. W ten sposób możesz robić wiele wymyślnych rzeczy, ponieważ pomaga to oddzielić stan ruchu. Żeby wymienić tylko kilka:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Są to typowe czynności, które zwykle wdrażamy, aby uzyskać pożądany efekt, taki jak przeciąganie widoku na ekranie.

Z drugiej strony, onClicknie daje wiele oprócz tego, który widok interakcji użytkownika. onClickjest kompletnym wydarzeniem obejmującym skupienie, naciśnięcie i zwolnienie. Więc masz nad tym niewielką kontrolę. Jedna strona do góry jest bardzo prosta do wykonania.

czy musimy wdrożyć oba?

Nie jest to konieczne, chyba że chcesz zepsuć użytkownika. Jeśli potrzebujesz tylko prostego zdarzenia kliknięcia, przejdź do onClick. Jeśli chcesz czegoś więcej niż kliknięcia, idź onTouch. Wykonanie obu komplikuje proces.

Z punktu widzenia użytkownika jest to niezauważalne, jeśli wdrażasz onTouchostrożnie, aby wyglądać onClick.

PH7
źródło
3
Jeśli potrzebujesz kontroli, wybierz onTouch. W większości przypadków onClick wystarczy. Zobacz odpowiedź PH7.
drulabs
Nadal próbuję wymyślić, którego użyć. Jeśli mam 4 widoki, z których 3 wymagają zarówno kliknięcia, jak i przesunięcia, a czwarty tylko kliknięcia. Wiem, że mogę używać onTouch tylko jako kliknięcia lub przesunięcia dla pierwszych 3 widoków, ale co z czwartym? Czy powinienem wdrożyć onClick dla jednego widoku, czy po prostu użyć onTouch, ponieważ jest już wywołany ..?
cjayem13
Należy zauważyć, że może być konieczne użycie onTouch, aby osiągnąć określone wyniki, w którym to przypadku punkt widzenia użytkownika jest potępiony. FE, jeśli chcesz zablokować wyświetlanie klawiatury programowej, aby móc udostępnić własną, musi to być za pośrednictwem onTouch. TIL onClick tego nie zrobi.
ChiefTwoPencils
24

Zdarzenie „Dotyk” ma miejsce, gdy ktoś przyłoży palec do ekranu. Jest wywoływana przez ruch palca, w dół, przeciąganie i w górę. „Kliknięcie” nie musi nawet pochodzić z ekranu. Może to być ktoś, kto naciska klawisz Enter.

Użyj, OnTouchListenergdy chcesz otrzymywać wydarzenia z czyjegoś palca na ekranie.

Użyj, OnClickListenergdy chcesz wykryć kliknięcia.

Thomas Dignan
źródło
Widziałem programistę używającego zdarzenia dotykowego dla przycisku, jaki będzie tego powód? Nie testowałem na telefonie, ale czy jest jakaś improwizacja podczas występu?
Nixit Patel
1
@NixitPatel Nie przychodzi mi do głowy żaden dobry powód bez sprawdzenia ich źródła.
Thomas Dignan
prawda, ale teraz znalazłem odpowiedź ... z pomocą was i podejściem opartym na cząstkach. nie musisz się martwić, dzięki za pytanie
Nixit Patel
9
  • onClickListener jest używany za każdym razem, gdy zostanie zgłoszone zdarzenie click dla dowolnego widoku, na przykład: click event dla Button, ImageButton.

  • onTouchListener jest używany, gdy chcesz wdrożyć funkcję dotykową, na przykład, jeśli chcesz uzyskać współrzędne ekranu w miejscu dotknięcia.

z oficjalnego dokumentu, definicje obu to:

  • onClickListner: Definicja interfejsu wywołania zwrotnego po kliknięciu widoku.
  • onTouchListener: Definicja interfejsu dla wywołania zwrotnego, które ma być wywołane, gdy do tego widoku zostanie wysłane zdarzenie dotykowe. Wywołanie zwrotne zostanie wywołane przed przekazaniem zdarzenia dotyku do widoku.
Lucyfer
źródło
1
Widziałem programistę używającego zdarzenia dotykowego dla przycisku, jaki będzie tego powód? Nie testowałem na telefonie, ale czy jest jakaś improwizacja podczas występu?
Nixit Patel
8

Jednym z dobrych powodów używania zdarzeń ontouch zamiast zdarzeń onclick jest uzyskanie szybszej odpowiedzi po kliknięciu przez użytkownika. Gdy zdarzenie onclick ma opóźnienie w udzieleniu odpowiedzi i podjęciu wymaganego działania. Zdarzenia ontouch są lepsze do dostarczania wydajnych mobilnych aplikacji internetowych.

Bassel Mourjan
źródło
2

OnClickListener - służy do podstawowego celu, gdy wystarczy kliknięcie od użytkownika, tj. kliknięcie przycisku, bez przeciągania lub gestów na ekranie

OnTouchListenerjest w zasadzie bardziej precyzyjną kontrolką niż OnClickListener. Wykonuje i działa po naciśnięciu / zwolnieniu na ekranie Umożliwia użytkownikowi kombinację ruchu, dotknięcia w dół, dotyku w górę, przeciągnięcia palcem lub dowolnego ruchu na ekranie

Rohit Goyal
źródło
1

Wolisz używać onTouch. Podaj przykład: kiedy masz w nim ViewPager i TextView. jeśli zaimplementujesz setOnClickListener na textView, nie będziesz mógł przesuwać ViewPagera po dotknięciu / przesunięciu w TextView

LiangWang
źródło