M0286_Libro Curso
Android
2.1.2.3. Posicionando la imagen Vamos a avanzar un poquito, y vamos a ver en este capítulo cómo posicionar la imagen anterior en la pantalla, dependiendo de la zona pulsada en la pantalla. Siguiendo con el código del ejemplo anterior, en primer lugar, necesitamos definir dos variables miembro para almacenar las posiciones cuando realizamos el toque en la pantalla. Las llamaremos mX y mY que serán de tipo entero. Para poder ver la imagen en estas coordenadas, cambiaremos la llamada al drawBitmap() que se encuentra en el método doDraw() y reemplazaremos el 20, 20 con nuestras variables (mX y mY). public void doDraw(Canvas canvas) { canvas.drawColor(Color. BLACK ); canvas.drawBitmap(mBitmap, mX, mY, null); } Ahora debemos establecer las variables con los valores correctos. A la información sobre el evento táctil se puede acceder con el método onTouchEvent(), que será llamado cada vez que se toque sobre la pantalla. Cada vista tiene este método y como hereda de la SurfaceView , simplemente debemos anularlo. Así podemos reaccionar con él de la manera que queramos. Como en nuestro caso queremos obtener la información de los puntos de la pantalla que hemos pulsado, usaremos los métodos getX() y getY() para capturar los eventos y almacenarlos en nuestras variables anteriormente definidas. Debemos convertirlos explícitamente a int , porque devuelven valor float , y en el momento en el que los convertimos podríamos perder algo de precisión, es necesario realizar el Casting de forma explícita. Finalmente, añadimos este método en nuestra clase Panel : @Override public boolean onTouchEvent(MotionEvent event) { private int mX; private int mY;
mX = (int) event.getX(); mY = (int) event.getY(); return super.onTouchEvent(event);
}
Ya podemos ejecutar nuestra aplicación. Podemos observar que cuando pulsas en un punto de la pantalla, la imagen se coloca allí desde la esquina superior izquierda de la imagen, y eso ocurre por el sistema de coordenadas del dispositivo, ya que el punto 0,0 se encuentra en la parte superior izquierda.
94
Made with FlippingBook - Online catalogs