M0286_Libro Curso

Android

Ahora vamos a implementar el gesto de arrastre en matrix . Recordando el registro que nos devolvió anteriormente nuestra aplicación, un gesto de arrastre comienza con ACTION_DOWN , que es cuando el primer dedo toca la pantalla, y termina con ACTION_UP o ACTION_POINTER_UP , que es cuando ese dedo se levanta de la pantalla. Definimos esto en switch : // Manejo de eventos tactiles... switch (event.getAction() & MotionEvent. ACTION_MASK ) { case MotionEvent. ACTION_DOWN : savedMatrix.set(matrix); start.set(event.getX(), event.getY()); Log.d( TAG , “mode=DRAG”); mode = DRAG ; break; case MotionEvent. ACTION_UP : case MotionEvent. ACTION_POINTER_UP : mode = NONE ; Log.d( TAG , “mode=NONE”); break; case MotionEvent. ACTION_MOVE : if (mode == DRAG ) { // ... matrix.set(savedMatrix); matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); } break; } Cuando empezamos el gesto, recordamos la posición inicial del puntero y el valor actual de la matriz de transformación. Cada vez que movamos el dedo, iniciaremos de nuevo esta matriz en su valor original y llamaremos a postTranslate() con el que añadiremos un vector de traducción, que será la diferencia entre las posiciones actual e inicial.

Si ejecutamos el programa, podremos mover la imagen utilizando un dedo.

208

Made with FlippingBook - Online catalogs