PDA

Ver la Versión Completa : Animar un boton con imagenes.


kaiser75
24/12/13, 19:26:04
Tengo unos cuantos botones creados con sus respectivas imagenes de fondo, imagenes al pulsar etc, hay manera de usar por ejemplo una animacion al pulsar el boton? tengo creada una animacion con imagenes .png en la carpeta drawable, pero so soy capaz de que se mueva en el boton :rolleyes:.

neoadn
24/12/13, 19:41:04
No se si te funcionará pero prueba con esto, si quieres volver anirmar el boton vuelve a lanzarlo y te deberia de estar animado... pero no se si te funcionará.

Prueba primero este.
Button b1 = (Button) find.....;

AnimationDrawable frame = (AnimationDrawable) b1.getBackground();
frame.stop();
frame.start();



Si no funciona intenta con esté, hace tiempo no me funcionaba de la primera forma y aunque es una tontería ya que para y arranca esté como esté me lo había arreglado.

Button b1 = (Button) find.....;

AnimationDrawable frame = (AnimationDrawable) b1.getBackground();
if (frame.isRunning()) {
frame.stop();
frame.start();
} else {
frame.stop();
frame.start();
}

PD- La animación debe de estar en un animation-list

kaiser75
26/12/13, 17:10:56
Hola neoadn, gracias por tu respuesta, mira yo para una animacion normal en un ImageView lo pongo asi, y me funciona correctamente...

Primero creo un animation-list.

declaro la animacion.
AnimationDrawable mi_animacion;

en onCreate:

// Animacion.
ImageView imgmov = (ImageView) findViewById(R.id.imagen_anim);
imgmov.setBackgroundResource(R.drawable.animacion1 );
mi_animacion = (AnimationDrawable) imgmov.getBackground();

// Empezar animacion.
imgmov.post(new Runnable(){
public void run(){
mi_animacion.start();
}

pero en el boton no me funciona porque los tengo en un array y no se como acceder a ellos.

// Los Botones
private ImageView Botones[];

// Inicializar los botones
Botones = new ImageView[miJuego.getBOARD_SIZE()];
Botones[0] = (ImageView) findViewById(R.id.one);
Botones[1] = (ImageView) findViewById(R.id.two);
Botones[2] = (ImageView) findViewById(R.id.three);
Botones[3] = (ImageView) findViewById(R.id.four);
Botones[4] = (ImageView) findViewById(R.id.five);
Botones[5] = (ImageView) findViewById(R.id.six);
Botones[6] = (ImageView) findViewById(R.id.seven);
Botones[7] = (ImageView) findViewById(R.id.eight);
Botones[8] = (ImageView) findViewById(R.id.nine);

Despues pongo una imagen a cada boton (estatica):

if (player == miJuego.PLAYER_ONE)
Botones[location].setBackgroundDrawable(getResources().getDrawable( R.drawable.btn_uno));
else
Botones[location].setBackgroundDrawable(getResources().getDrawable( R.drawable.btn_dos)); // Aqui es cuando no se donde me equivoco y como acceder al array de los botones.




...

kaiser75
17/09/14, 11:57:14
Aprovecho este hilo ya que va de lo mismo, tengo un boton con un switch que al reproducir el sonido cambia el fondo del boton a otra imagen, y cuando pulsas otra vez detiene el sonido y vuelve a poner el fondo por defecto, pero... como podria hacer para que al detenerse el sonido automaticamente se cambiase la imagen de fondo sin tocar el boton?.

kriogeN
17/09/14, 12:17:29
Si usas SoundPool no se puede mediante un evento, si usas MediaPlayer tienes el evento OnCompletionListener.

La solución al SoundPool sería saber cuanto dura el sonido (SoundPool tampoco te da esa información, puedes apoyarte en MediaPlayer para obtener la info mientras rellenas el SoundPool) y guardarlo en un diccionario. Cuando vas a reproducir el sonido sabrás el tiempo que tendrás que darle por ejemplo a un CountDownTimer para que haga la animación de cambio.

kaiser75
18/09/14, 09:43:06
Uso Media Player, probare lo que has dicho con OnCompletionListener a ver si funciona.

kaiser75
25/09/14, 12:20:08
Tengo otra consulta sobre las animaciones del boton, el OnCompletionListener que dijo kriogeN funciona perfecto, lo que pasa es que tengo un array de botones con un array de sonidos, estos se reproducen correctamente segun el boton que pulsas y muestran la animacion que al terminar el sonido se para.

El problema es que si pulso otro boton sin dejar que termine el que he pulsado antes se queda la animacion en bucle, teniendo varios botones con la animacion puesta, hay manera de resetear la animacion y que deje el fondo por defecto en los botones que no reproducen sonido?