Прерванное нажатие в андроид

от
Android    touch

В некоторых туториалах по программированию на андроид не разбираются мелкие нюансы, которые могут быть важны при определённых условиях, а если и рабираются, то зачастую расплывчато. Я лаконично разберу работу интерфейса обработки одиночного касания и константу ACTION_CANCEL, а так же выполню небольшое тестирование касаний, на собранном приложении.

Скриншот работающего приложения:

CurcleTap.apk

Цитата неточного туториала 7 апреля 2017 года:

ACTION_CANCEL – практически никогда не случается. Насколько я понял, возникает в случае каких-либо внутренних сбоев, и следует трактовать это как ACTION_UP.
© StartAdroid.ru

Код приложения тестировщика:

Открыть спойлер

Здесь мы создали активити реализующее интерфейс обработки одиночного касания. Информация о касании вносится в соответствующий буфер строк с помощью метода StringBuffer.append(Object); но перед эти очищаем. Затем буфер строк складываются в общий буфер строк и отправляется в TextView, чтобы отобразиться на экране.

Выводятся события касания экрана, вместе с координатами этого события в формате "Имя события: координаты".

Что значит отменённое касание и когда она срабатывает?

Многие не знают, зачем CANCEL. Многие начинают считать отменённое касание равно прерванному, но это не так. Отменённое касание это касание прерванное не по воле пользователя, если выразиться абстрактно:

  1) Это то, что активность прервана во время касания, но продолжает работать.
  2) Это то, что активность временно приостановлена прямо во время касания.
  3) Это то, что одна активность отменена другой, системной активностью.

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

Приложение:

app.apk

Открыть спойлер
  • +2
  • views 3433