M0286_Libro Curso
2: Avanzado en Android
2.1.2.5. Moviendo las imágenes En este capítulo vamos a “animar” las imágenes en la pantalla. Lo que haremos será tocar la pantalla y veremos las imágenes en movimiento por ella. De momento la dirección y la velocidad las dejaremos al azar. Partiremos del proyecto anterior. Y realizaremos las siguientes modificaciones. En nuestra clase Element, que era la que dibujaba cada imagen en la pantalla, debemos declarar dos nuevas variables que serán las que definan la velocidad y la dirección con las que se moverá por la pantalla nuestra imagen. Asimismo, deberemos modificar el constructor, llamar a la clase de java Random() , que será la que dará las posiciones aleatorias. mBitmap = BitmapFactory. decodeResource (res, R.drawable. seas ); mX = x - mBitmap.getWidth() / 2; mY = y - mBitmap.getHeight() / 2; mSpeedX = rand.nextInt(7) - 3; mSpeedY = rand.nextInt(7) - 3; } Ahora creamos el método animate() para animar la imagen. En nuestro caso solo cambiaremos la posición de la imagen, que viene dada por la velocidad y el tiempo transcurrido desde la última vez que se le llamó. public void animate(long elapsedTime) { } Y el método checkBorders() que comprueba si el elemento se encuentra dentro de la pantalla. Si no es el caso, se cambia la velocidad en este eje y se ajusta la posición hacia el punto más lejano todavía visible en el borde. Esto evitará que las imágenes se muevan fuera de la vista de la pantalla. private void checkBorders() { if (mX <= 0) { mSpeedX = -mSpeedX; mX = 0; } else if (mX + mBitmap.getWidth() >= Panel.mWidth) { mSpeedX = -mSpeedX; mX = Panel.mWidth - mBitmap.getWidth(); } mX += mSpeedX * (elapsedTime / 20f); mY += mSpeedY * (elapsedTime / 20f); checkBorders(); private int mSpeedX; private int mSpeedY; public Element(Resources res, int x, int y) { Random rand = new Random();
99
Made with FlippingBook - Online catalogs