Разница между OnTouch и OnClick Android

91

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

Какой лучше использовать?

Нам нужно реализовать и то, и другое?

Никсит Патель
источник

Ответы:

101

какой лучше использовать?

Это действительно зависит от ваших требований.

onTouchдает вам событие движения. Таким образом, вы можете делать много необычных вещей, поскольку это поможет вам разделить состояние движения. Просто назвать несколько:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Это обычные действия, которые мы обычно выполняем, чтобы получить желаемый результат, например, перетаскивание представления на экране.

С другой стороны, onClickмало что дает, кроме того, с каким представлением взаимодействует пользователь. onClickэто законченное событие, состоящее из фокусировки, нажатия и отпускания. Итак, у вас мало контроля над этим. С одной стороны, это очень просто реализовать.

нам нужно реализовать оба?

В этом нет необходимости, если вы не хотите испортить своего пользователя. Если вам просто нужно простое событие щелчка, выберите onClick. Если вам нужно больше, чем просто щелкнуть мышью, выбирайте onTouch. И то, и другое усложнит процесс.

С точки зрения пользователя это незаметно, если вы onTouchтщательно реализуете его, чтобы он выглядел onClick.

PH7
источник
3
Если вам нужен контроль, выберите onTouch. В большинстве случаев подойдет onClick. См. Ответ PH7.
drulabs 03
Я все еще пытаюсь понять, что использовать. Если у меня есть 4 представления, 3 из которых требуют как щелчка, так и смахивания, а четвертое - только щелчка. Я знаю, что могу использовать onTouch только в качестве щелчков или смахиваний для первых трех просмотров, но как насчет четвертого? Должен ли я реализовать onClick для одного представления или просто использовать onTouch, поскольку он уже вызван ..?
cjayem13,
Следует отметить, что для достижения определенных результатов может потребоваться использование onTouch, и в этом случае точка зрения пользователя будет осуждена. FE, если вы хотите заблокировать отображение виртуальной клавиатуры, чтобы вы могли указать свою, это должно быть через onTouch. TIL onClick этого не сделает.
ChiefTwoPencils
24

Событие «касание» - это когда кто-то касается экрана пальцем. Он вызывается во время движения пальца вниз, перетаскивания и вверх. «Щелчок» даже не должен происходить с экрана. Это может быть кто-то, нажимающий клавишу ввода.

Используйте, OnTouchListenerкогда вы хотите получать события от чьего-либо пальца на экране.

Используйте, OnClickListenerесли вы хотите обнаруживать щелчки.

Томас Дигнан
источник
Я видел, как какой-то разработчик использовал событие касания для кнопки, в чем причина этого? Я не тестировал на телефоне, но есть ли импровизация исполнения?
Nixit Patel 03
1
@NixitPatel Ни одна веская причина не приходит на ум, если не увидит их источник.
Thomas Dignan
правда, но теперь я нашел свой ответ ... с помощью вас, ребята, и некоторого подхода частиц. не о чем беспокоиться, спасибо за вопрос
Nixit Patel
9
  • onClickListener используется всякий раз, когда возникает событие щелчка для любого представления, например, например: событие щелчка для кнопки, ImageButton.

  • onTouchListener используется всякий раз, когда вы хотите реализовать сенсорную функциональность, например, если вы хотите получить координаты экрана, в котором вы точно касаетесь.

из официального документа, определение для обоих:

  • onClickListner: Определение интерфейса для обратного вызова, который будет вызываться при нажатии на представление.
  • onTouchListener: Определение интерфейса для обратного вызова, который будет вызываться, когда событие касания отправляется этому представлению. Обратный вызов будет вызываться до того, как событие касания будет передано представлению.
Люцифер
источник
1
Я видел, как какой-то разработчик использовал событие касания для кнопки, в чем будет причина этого? Я не тестировал на телефоне, но есть ли импровизация исполнения?
Nixit Patel 03
8

Одна из веских причин использовать события ontouch вместо событий onclick - получить более быстрый ответ на щелчок пользователя. Если событие onclick задерживается с ответом и продолжением требуемого действия. События ontouch лучше подходят для предоставления высокопроизводительных мобильных веб-приложений.

Бассель Мурджан
источник
2

OnClickListener - используется для основной цели, когда нам просто нужен щелчок от пользователя, то есть щелчок кнопки, отсутствие перетаскивания или жестов на экране

OnTouchListenerпо сути, это более точно настроенный элемент управления, чем OnClickListener. Он выполняет и выполняет действие при нажатии / отпускании на экране. Он позволяет пользователю использовать комбинацию движения, касания вниз, касания вверх, перетаскивания пальцем или любого движения на экране.

Рохит Гоял
источник
1

Предпочитаю использовать onTouch. Приведу пример: когда у вас есть ViewPager и TextView. если вы реализуете setOnClickListener в textView, вы не сможете пролистывать ViewPager, когда вы касаетесь / проводите по TextView

LiangWang
источник