Android: разница между ACTION_UP и ACTION_POINTER_UP
из документа android doc, я действительно не понимаю разницу между ACTION_UP и ACTION_POINTER_UP.
http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_DOWN
В основном я хочу захватить событие, когда один палец выпущен с экрана (даже если он еще может касаться его)
спасибо!
Ответы
Ответ 1
Я полагаю, что это связано с добавлением Multi-touch, ACTION_UP находится с API уровня 1, но ACTION_POINTER_UP был добавлен в API Level 5, когда был добавлен мультитач.
Результат, который вы получите, будет зависеть от того, какой метод вы вызываете, getAction() вернет ACTION_UP, тогда как getActionMasked() предоставит ACTION_POINTER_UP, но также позволит вам вызвать getActionIndex(), чтобы узнать, какой из указателей с несколькими касаниями имеет только был поднят. Я думаю, что это то, что вы хотите сделать.
Ответ 2
Начните здесь, если вы еще не прочитали: 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 означает, что весь жест был прерван по какой-то причине. Это завершает жест.