Подтвердить что ты не робот

Какая разница между ACTION_CANCEL и ACTION_UP в MotionEvent?

Я хочу отслеживать касание пальцем на экране. Так что я сделал, чтобы начать запись позиции, когда MotionEvent вызывает ACTION_DOWN, но как узнать, когда действие закончено, в ACTION_CANCEL или ACTION_UP?

Какая точная разница между ними?

4b9b3361

Ответ 1

MotionEvent:

  • ACTION_UP: прерванный жест завершен, движение содержит окончательное местоположение релиза, а также любые промежуточные точки со времени последнего события или перемещения.

  • ACTION_CANCEL: текущий жест прерван.

ACTION_CANCEL возникает, когда родитель получает доступ к движению, например, когда пользователь перетащил достаточно в виде списка, чтобы начать прокрутку, вместо того, чтобы позволить вам нажимать кнопки внутри него. Подробнее об этом вы можете узнать в документации группы просмотра: onInterceptTouchEvent.

поэтому используйте ACTION_CANCEL, когда действие перетаскивается из родителя, а ACTION_UP в противном случае.

Ответ 2

В общем, ACTION_UP запускается пользователем, когда гость заканчивает, чтобы точно указать, что пользователь завершил взаимодействие с движением.

С другой стороны, ACTION_CANCEL вызывается системой, чтобы показать, что родительское представление берет на себя управление одним из своих дочерних представлений.

Пожалуйста, взгляните на диаграмму diagram