|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Animar un boton con imagenes.
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
![]() |
|
#2
|
||||
|
||||
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. Código:
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. Código:
Button b1 = (Button) find.....; AnimationDrawable frame = (AnimationDrawable) b1.getBackground(); if (frame.isRunning()) { frame.stop(); frame.start(); } else { frame.stop(); frame.start(); }
__________________
![]() Última edición por neoadn Día 24/12/13 a las 19:45:05. |
#3
|
||||
|
||||
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. ... |
#4
|
||||
|
||||
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?.
__________________
|
#5
|
||||
|
||||
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. |
Gracias de parte de: | ||
#6
|
||||
|
||||
Uso Media Player, probare lo que has dicho con OnCompletionListener a ver si funciona.
__________________
|
#7
|
||||
|
||||
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?
__________________
|
![]() |
![]() |
||||||
|