M0286_Libro Curso

3: Próximas generaciones

En teoría, la API de Android puede con 256 dedos al mismo tiempo. Parece de risa, pero pensando que está pensado para dispositivos que pueden ser Tablet, un juego de tablero en la pantalla, con varios jugadores a la vez, podemos pensar que múltiples dedos van a estar tocándola al mismo tiempo. Vamos a seguir con nuestra aplicación, y ahora vamos a crear los métodos para realizar la transformación de la imagen. Para ello usaremos una pequeña función de la clase ImageView llamada transformación de matrices. Con la matriz representaremos cualquier tipo de rotación o torsión a la imagen. Esta función ya la hemos activado antes con el atributo android:scaleType= “matrix” en el archivo res/ layout/main.xml . Vamos a declarar dos matrices como campos, una servirá para guardar el valor actual y la otra para guardar el valor original antes de la transformación. Las usaremos en el onTouch() . Igualmente necesitamos de una variable mode para que nos diga si es un gesto de arrastre o de zoom, y las variables start , oldDist y mid , con las que controlaremos el proceso de zoom: public class Touch extends Activity implements OnTouchListener { private static final String TAG = “Touch”; // matrices usadas para mover y hacer zoom sobre la imagen Matrix matrix = new Matrix(); Matrix savedMatrix = new Matrix(); // nos podemos encontrar en uno de estos 3 estados static final int NONE = 0; static final int DRAG = 1; static final int ZOOM = 2; int mode = NONE ; // recuerda algunos aspectos para el proceso de zoom PointF start = new PointF(); PointF mid = new PointF(); float oldDist = 1f; public boolean onTouch(View v, MotionEvent event) { ImageView view = (ImageView) v; // volcamos el evento tactil en el registro dumpEvent(event); // Manejo de eventos tactiles... switch (event.getAction() & MotionEvent. ACTION_MASK ) { } view.setImageMatrix(matrix); return true; // indica que el evento tuvo lugar }

}

207

Made with FlippingBook - Online catalogs