studio programacion móviles libros libro desarrollo curso aplicaciones android multi-touch

programacion - motionevent android



android: diferencia entre ACTION_UP y ACTION_POINTER_UP (2)

del doc de Android solo, realmente no entiendo la diferencia entre ACTION_UP y ACTION_POINTER_UP. http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_DOWN

básicamente quiero capturar el evento cuando se suelta un dedo de la pantalla (incluso si otro aún puede tocarlo)

¡Gracias!


Comience aquí si aún no lo ha leído: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

Android piensa en eventos táctiles en términos de gestos. Un gesto en este sentido incluye todos los eventos desde el primer dedo que toca la pantalla hasta el último dedo que sale de la pantalla. La secuencia de eventos completa de un solo gesto siempre se envía a la misma vista que se seleccionó durante la ACTION_DOWN inicial a menos que un padre intercepte la secuencia de eventos por algún motivo. Si un padre intercepta la secuencia de eventos de un niño, el niño obtendrá ACTION_CANCEL.

Si está trabajando con eventos multitouch, siempre use el valor devuelto por getActionMasked () para determinar la acción. Si no necesita multitouch o está trabajando con una versión de plataforma anterior, puede ignorar los eventos ACTION_POINTER_ *.

  • ACTION_DOWN es para el primer dedo que toca la pantalla. Esto comienza el gesto. Los datos del puntero para este dedo siempre están en el índice 0 en MotionEvent.
  • ACTION_POINTER_DOWN es para los dedos adicionales que entran en la pantalla más allá del primero. Los datos del puntero para este dedo están en el índice devuelto por getActionIndex ().
  • ACTION_POINTER_UP se envía cuando un dedo sale de la pantalla pero al menos un dedo aún lo está tocando. La última muestra de datos sobre el dedo que subió está en el índice devuelto por getActionIndex ().
  • ACTION_UP se envía cuando el último dedo sale de la pantalla. La última muestra de datos sobre el dedo que subió está en el índice 0. Esto finaliza el gesto.
  • ACTION_CANCEL significa que todo el gesto fue abortado por alguna razón. Esto termina el gesto.

Creo que se derivó de la adición de Multi-touch, ACTION_UP ha estado en API desde el nivel 1, pero ACTION_POINTER_UP fue agregado en API Level 5 cuando se agregó el toque múltiple.

El resultado que obtenga dependerá del método que esté llamando, getAction () devolverá ACTION_UP mientras que getActionMasked () le daría ACTION_POINTER_UP pero también le permitirá llamar a getActionIndex () para averiguar cuál de los punteros multitáctiles acaba de aparecer. Creo que esto es lo que quieres hacer.