Android: разница между ACTION_UP и ACTION_POINTER_UP

Из документа android doc, я действительно не понимаю разницу между ACTION_UP и ACTION_POINTER_UP. http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_DOWN

В основном я хочу захватить событие, когда один палец выпущен с экрана (даже если он еще может касаться его)

благодаря!

Solutions Collecting From Web of "Android: разница между ACTION_UP и ACTION_POINTER_UP"

Я полагаю, что это связано с добавлением Multi-touch, ACTION_UP находится с API уровня 1, но ACTION_POINTER_UP был добавлен в API Level 5, когда был добавлен мультитач.

Результат, который вы получите, будет зависеть от того, какой метод вы вызываете, getAction () вернет ACTION_UP, тогда как getActionMasked () даст ACTION_POINTER_UP, но также позволит вам вызвать getActionIndex (), чтобы узнать, какой из указателей с несколькими касаниями только что был поднят. Я думаю, это то, что вы хотите сделать.

Начните здесь, если вы еще этого не читали: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

Android думает о событиях касания с точки зрения жестов. Жест в этом смысле включает в себя все события от первого пальца, который касается экрана до последнего пальца, который покидает экран. Целая последовательность событий одного жестов всегда отправляется на ту же точку зрения, которая была выбрана во время начального ACTION_DOWN, если родитель не перехватил поток событий по какой-либо причине. Если родитель перехватывает поток событий ребенка, дочерний элемент получит ACTION_CANCEL.

Если вы работаете с событиями мультитач, всегда используйте значение, возвращаемое getActionMasked (), чтобы определить действие. Если вам не нужен мультитач или вы работаете со старой версией платформы, вы можете игнорировать события ACTION_POINTER_ *.

  • ACTION_DOWN – это первый палец, касающийся экрана. Это начинает жест. Данные указателя для этого пальца всегда находятся в индексе 0 в MotionEvent.
  • ACTION_POINTER_DOWN – для дополнительных пальцев, которые входят в экран за пределами первого. Данные указателя для этого пальца находятся в индексе, возвращаемом getActionIndex ().
  • ACTION_POINTER_UP отправляется, когда палец покидает экран, но по крайней мере один палец все еще касается его. Последний пример данных о пальце, который поднялся, находится в индексе, возвращаемом getActionIndex ().
  • ACTION_UP отправляется, когда последний палец покидает экран. Последний образец данных о пальце, который поднялся, находится в индексе 0. Это завершает жест.
  • ACTION_CANCEL означает, что весь жест был прерван по какой-то причине. Это завершает жест.