Різниця між OnTouch та OnClick Android


91

Чи є якась різниця між OnTouchListenerі OnClickListener? Я питаю не з точки зору програмування, а з точки зору користувацького досвіду.

Який з них краще використовувати?

Чи потрібно нам впроваджувати обидва?

Відповіді:


101

який з них краще використовувати?

Це насправді залежить від ваших вимог.

onTouchдає вам подію руху. Таким чином, ви можете робити багато вигадливих речей, оскільки це допомагає вам відокремити стан руху. Просто назвемо декілька:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Це звичайні дії, які ми зазвичай виконуємо, щоб отримати результат бажання, наприклад, перетягування подання на екран.

З іншого боку, onClickце не дає вам багато, крім того, з яким видом взаємодіє користувач. onClickце повна подія, що складається з фокусування, натискання та відпускання. Отже, ти мало контролюєш це. Одна сторона вгору - це дуже просто реалізувати.

нам потрібно впроваджувати обидва?

Це не потрібно, якщо ви не хочете базікати з вашим користувачем. Якщо ви просто хочете простою подією клацання, спробуйте onClick. Якщо ви хочете більше, ніж натиснути, спробуйте onTouch. Виконання обох завдань ускладнить процес.

З точки зору користувача, це непомітно, якщо ви onTouchретельно впроваджуєте, щоб виглядати onClick.


3
Якщо вам потрібен певний контроль, перейдіть за onTouch. Для більшості випадків onClick буде робити. Дивіться відповідь PH7.
друлаби

Я все ще намагаюся зрозуміти, що використовувати. Якщо у мене є 4 подання, 3 з яких вимагають як клацання, так і проведення пальцем, тоді як четверте - лише клацання. Я знаю, що можу використовувати onTouch лише як клацання або проведення пальцем протягом перших 3 переглядів, а як щодо 4-го? Чи слід реалізовувати onClick для одного представлення або просто використовувати onTouch, оскільки він уже називається ..?
cjayem13,

Слід зазначити, що для досягнення певних результатів може знадобитися використання onTouch, і в цьому випадку точка зору користувача буде засуджена. FE, якщо ви хочете заблокувати показ м’якої клавіатури, щоб ви могли надати свою власну, це має бути через onTouch. TIL onClick цього не зробить.
ChiefTwoPencils

24

Подія "Дотик" - це коли хтось кладе палець на екран. Його викликають під час руху пальця, вниз, перетягування та вгору. "Клацання" навіть з екрану не надходить. Це може бути хтось, хто натискає клавішу Enter.

Використовуйте, OnTouchListenerколи хочете отримувати події з чийогось пальця на екрані.

Використовуйте, OnClickListenerколи хочете виявити кліки.


Я бачив, як якийсь розробник використовував сенсорну подію для кнопки, що буде причиною цього? Я не тестував по телефону, але, чи є якась імпровізація продуктивності?
Nixit Patel

1
@NixitPatel Жодна вагома причина не спадає на думку, не бачачи їх джерела.
Thomas Dignan

правда, але тепер я знайшов свою відповідь ... за допомогою вас, хлопці, та певного підходу до частинок. не потрібно хвилюватися, дякую за запитання
Nixit Patel

9
  • onClickListener використовується, коли викликається подія клацання для будь-якого подання, скажімо, наприклад: клік події для Button, ImageButton.

  • onTouchListener використовується, коли ви хочете застосувати функціональність типу Touch, скажімо, наприклад, якщо ви хочете отримати координати екрана, де ви точно торкаєтесь.

з офіційного документа, визначення для обох:

  • onClickListner: Визначення інтерфейсу для зворотного виклику, який буде викликаний при натисканні подання.
  • onTouchListener: Визначення інтерфейсу для зворотного виклику, який слід викликати, коли подія дотику надсилається до цього подання. Зворотний дзвінок буде викликаний до того, як подія дотику буде подана у подання.

1
Я бачив, як якийсь розробник використовував сенсорну подію для кнопки, що буде причиною цього? Я не тестував по телефону, але, чи є якась імпровізація виконання?
Nixit Patel

8

Однією з вагомих причин використовувати події ontouch над подіями onclick є швидша реакція на клік користувача. Якщо подія onclick зазнає затримки у відповіді та продовженні необхідних дій. ontouch події краще для забезпечення високоефективних мобільних веб-програм.


2

OnClickListener - використовується для базової мети, коли нам потрібен лише клік від користувача, тобто клацання кнопки, відсутність перетягування або жестів на екрані

OnTouchListenerв основному є більш точно налаштованим елементом управління, ніж OnClickListener. Він виконує та виконує дії на прес-релізі на екрані. Це дозволяє користувачеві поєднувати переміщення, дотик вниз, дотик вгору, перетягування пальця або будь-який рух на екрані


1

Віддайте перевагу використанню onTouch. Наведіть приклад: коли у вас є ViewPager і TextView. якщо ви застосуєте setOnClickListener на textView, ви не зможете провести пальцем по ViewPager, коли торкаєтесь / проводите по TextView

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.