Hola Androinos!!!
Hoy os traigo una nueva entrada, que esta relacionada con el último post que hice. Recordando un poco éste , se trataba de presionar sobre una imagen.
Ahora es lo mismo, lo único que se ha cambiado la imagen por un botón(por probar con más elementos, no por nada especial) , pero esta vez le añadimos un evento más, que este botón está en movimientooo!!!
Lo primero que vamos hacer para que nuestro elementos se muevan es crear una carpeta que se llame anim, dentro de la carpeta res.
Podéis seguir estos pasos para saber más sobre como crear vuestro archivo de movimientos en la carpeta res, pulsando sobre este enlace, también en este otro para saber más sobre las especificaciones de android, en este enlace
En este caso mi fichero xml de movimiento es el siguiente:
<translate
android:fromXDelta=»0%p»
android:fromYDelta=»0%p»
android:toXDelta=»0%p»
android:toYDelta=»25%p»
android:repeatMode=»reverse»
android:duration=»3000″
android:repeatCount=»-1″
xmlns:android=»http://schemas.android.com/apk/res/android»>
</translate>
En mi caso para que el movimiento sea en ambos lados he utilizado la característica de reverse.
Otra peculiaridad que tiene esta aplicación , es la de cambiar de pantalla cuando hemos conseguido pulsar la imagen.
En mi caso he incluido dos pantallas de juego, y una de final, para ello he se han definido el layout principal, donde estará el primer evento que tenemos que pulsar mientras se está moviendo.
Un segundo layout donde hay que pulsar otro elemento, y finalmente el layout final donde se muestra que el mini juego ha finalizado.
Mi primer layout:
<RelativeLayout xmlns:android=»http://schemas.android.com/apk/res/android»
android:orientation=»vertical»
android:layout_width=»fill_parent»
android:layout_height=»fill_parent»
android:background=»@drawable/fondo»
>
<Button
android:id=»@+id/boton1″
android:layout_width=»wrap_content»
android:layout_height=»wrap_content»
android:layout_alignParentRight=»true»
android:layout_alignParentTop=»true»
android:background=»@drawable/zana» />
</RelativeLayout>
Como podemos ver nuestra pantalla tiene el botón con el dibujo de la zanahoria al cuál se le ha añadido el movimiento, el main relacionado con esta pantalla queda de la siguiente forma:
setContentView(R.layout.main);
Animation mover = AnimationUtils.loadAnimation(this, R.anim.translate);
//mover.reset();
// Primero localizamos los botones dentro del layout
Button boton1 = (Button) findViewById(R.id.boton1);
boton1.startAnimation(mover);
Toast toast1 =
Toast.makeText(this,
«BUSCA LA ZANAHORIA» , Toast.LENGTH_LONG);
toast1.show();
// Asignamos el comportamiento a los botones
boton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Lanzar� la actividad 1
Intent i = new Intent();
i.setClass(MenuActivity.this, Activity1.class);
startActivity(i);
}});
El movimiento esta definido en estas líneas
Animation mover = AnimationUtils.loadAnimation(this, R.anim.translate);
Button boton1 = (Button) findViewById(R.id.boton1);
boton1.startAnimation(mover);
En mi caso translate es el nombre del archivo xml que define el movimiento que va hacer la zanahoria, este movimiento va ser en vertical de arriba a abajo.
Una vez que hayamos pulsado recogemos el evento y pasaremos a la segunda pantalla, esta es otra activity diferente, esto se referencia en estas líneas.
Intent i = new Intent();
i.setClass(MenuActivity.this, Activity1.class);
startActivity(i);
En este segundo activity es otra pantalla pero con otro dibujos el código es el mimo.
En este activiy llamaremos a nuestro segundo layout. El código es el siguiente:
setContentView(R.layout.activity1);
// Primero localizamos los botones dentro del layout
Button boton2 = (Button) findViewById(R.id.button1);
Toast toast1 =
Toast.makeText(this,
«BUSCA LA OREO» , Toast.LENGTH_LONG);
toast1.show();
Animation mover = AnimationUtils.loadAnimation(this, R.anim.translate);
boton2.startAnimation(mover);
// Asignamos el comportamiento a los botones
boton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Lanzar� la actividad 1
Intent i = new Intent();
i.setClass(Activity1.this, Activity2.class);
startActivity(i);
}});
Con setContentView(R.layout.activity1), llamamos a nuestro segundo layout en el que se ha cambiado el fondo y el botón que pulsemos.
Al pulsar el botón que tiene la oreo captaremos el evento y pasaremos a otra pantalla, nuestro activity final.
Nuestro último activity sólo mostrará el último layout.
Si tenéis alguna duda sobre como introducir fondos de imágenes en los layout, revisar post anteriores donde se explica.
Un saludo y espero que os haya gustado 🙂


