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

Respuesta
 
Herramientas
  #1  
Viejo 31/08/14, 20:36:50
Array

[xs_avatar]
violgore violgore no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 102
Modelo de smartphone: S4

Cambiar fondo secuencialmente

Hola compañeros
estoy realizando una app y necesito que cuando le doy a un boton, se abra una activity y muiestre un fondo, pero a los dos o tres segundo muestre otro, y asi.

Lo he intentado con el metodo OnStart y bueno lo que hace es que la muestra en blanco, he probado dos modos

@Override
Protected void onStart() { solo muestra en blanco

protected void onStart(Bundle savedInstanceState) { -- estre muestra el ultimo fondo definido, pero no los intermedios.

He de decir que he implementado un delay, para que se vaya viendo los cambios

Gracias de antemano
Responder Con Cita


  #2  
Viejo 31/08/14, 22:42:26
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Si el delay lo estás haciendo con Thread.sleep estás bloqueando el hilo de ejecución y por eso solo se muestra el último fondo. Android no puede refrescar la pantalla mientras tienes el control del hilo principal.

Soluciones hay varias, bien usando el Handler y el método postDelayed para programar el cambio de fondo en el tiempo que sea o usar los temporizadores (clase Timer, aunque podría tener problemas al actualizar elementos de la interfaz gráfica), o incluso otro hilo (idem). A mí personalmente me gusta el handler.

Aquí tienes un ejemplo: http://www.mopri.de/2010/timertask-b...use-a-handler
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #3  
Viejo 01/09/14, 19:09:25
Array

[xs_avatar]
violgore violgore no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 102
Modelo de smartphone: S4

Muchas gracias, voy a probar
Responder Con Cita
  #4  
Viejo 01/09/14, 19:17:17
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Buenas.

Yo lo he hecho para cambiar alguna view usando scheduleAtFixedRate de la siguiente manera
En onCreate pones esto:
(esta programado para poner 4 Imagenes diferentes)
Código:
int anima=0;
new Timer().scheduleAtFixedRate(new TimerTask(){
			@Override
			public void run() {
				handler.post(new Runnable(){
					@Override
					public void run() {
							if(anima==0){							
							amimarInfo(Imagenes.previews[0]);	
							anima=1;							
						}								
							
						else if(anima==1){
							amimarInfo(Imagenes.previews[1]);					
							anima=2;							
							}
						
						else if (anima==2){
							amimarInfo(Imagenes.previews[2]);	
								anima=3;
							}
						else if (anima==3){
							amimarInfo(Imagenes.previews[3]);	
							anima=4;
						}else if(anima==4){
							amimarInfo(Imagenes.previews[4]);	
							anima=0;
						}
					
}						
					});
				}				
			}, 0, 6000);
EN donde amimarInfo es :

Código:
public void amimarfondo(int img ){
		
		yourLayout.setBackgroundResource(img);
	}
donde yourLayout es tu layout previamente definido con su ID y donde las imagenes las almacenas en un array o un arrayList o lo que quieras.

Usa tambien el handler como dice mocelet para no bloquear el hilo principal

Supongo que habra mil formas de hacerlo pero a mi se me ocurrio hacer esta aunque los cambios los hacia tambien con animaciones, pero funcionar funciona.
Responder Con Cita
  #5  
Viejo 01/09/14, 19:27:24
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Si usas handler te sobra el timertask, con un postDelayed ya programas la siguiente ejecución cuando toque.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #6  
Viejo 01/09/14, 22:10:25
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Con postDelayed ejecutas lo que tienes dentro pasado un tiempo en milisegundos y sobra el Timer pero el quiere que se ejecute de forma continua , por eso uso el scheduleAtFixedRate usando el timer, ¿o hay alguna forma de que se ejecute en forma de bucle con el postdelayed?
pero vamos que habrá mil formas de hacerlo digo yo.

Un saludo.
Responder Con Cita
  #7  
Viejo 01/09/14, 22:39:01
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Claro, llamando al postDelayed justo al final del runnable para que se vuelva a ejecutar (es lo que hace en ejemplo que le puse enlace) . El runnable por cierto no hace falta crearlo cada vez, puedes guardar el objeto en una variable y reutilizarlo.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #8  
Viejo 02/09/14, 00:11:20
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
ah ok, no me fije bien en el link. La verdad que es un buen truco y no usas el scheduleAtFixedRate.
Un saludo.
Responder Con Cita
  #9  
Viejo 02/09/14, 22:17:35
Array

[xs_avatar]
violgore violgore no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 102
Modelo de smartphone: S4

Gracias a todos por vuestra ayuda, sois geniales
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 10:59:39 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /