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 26/03/14, 18:26:39
Array

[xs_avatar]
adrirs1 adrirs1 no está en línea
Usuario novato en la web
 
Fecha de registro: abr 2011
Mensajes: 14
Modelo de smartphone: samsung galaxy s gt-i9000
Tu operador: Movistar
¿Cambiar color de la app en todas las activities?

Hola, y gracias por adelantado, mi problema es el siguiente:

-Dentro de mi main activity en el menú tengo la opción de cambiar el tema de la app, es decir cambiar el color de la app a gusto del usuario..Entonces yo tengo un heder y un footer en cada una de las activities, pero este header y footer no tienen Id es decir que en todas las activities tienen el mismo nombre sin id, ya que hice un copiar pegar para ahorrar faena..
En estos views, en su propiedad background hago referencia a un archivo xml ubicado en la carpeta @drawable que me crea un efecto degradado, hasta ahí bien...
Mi pregunta es como puedo cambiar en tiempo de ejecución el valor del color que hay en este xml y que se refresquen todas las activities al modificarlo, y si no se puede hacer ..como puedo realizar el cambio de color en todas las activities dando la instrucción desde una sola activity.

Lo he intentado creando métodos en cada una de las activities y llamando a una función de estas creando objetos de esas clases, y que cada una vaya realizando su cambio....pero entra en el onCreate y no hace caso a mi función ya que la sobreescribe o algo raro...

Ahí va el código, gracias...Tambien adjunto proyecto por si alguien quiere una app con una pequeña base ...y el menú tipo dashboard

https://mega.co.nz/#!BEBkzDzB!WOJAtn...NIp3j0-2MyE-F0

Esta es la que realizara el cambio...hay comentarios y demás para que no me pete al lanzar el evento..

private void CambiarTema(){

if (color == "Azul"){
//fondoPrueba.setBackground(getResources().getDrawab le(R.drawable.background_degradado));


//header.setBackgroundResource(R.drawable.degradado_ header);
//footer.setBackgroundResource(R.drawable.degradado_ header);
}else if(color == "Rojo"){

//ESTA ES EL LA UNICA LINEA QUE HACE SU FUNCION ..YA QUE SOLO HAGO REFERENCIA AL COLOR DE ESTA ACTIVITY

fondoPrueba.setBackgroundResource(R.color.rojo);

//header.setBackgroundResource(R.drawable.degradado_ header_rojo);
//footer.setBackgroundResource(R.drawable.degradado_ header_rojo);
}else if(color == "Gris"){
header.setBackgroundResource(R.drawable.degradado_ header_gris);
footer.setBackgroundResource(R.drawable.degradado_ header_gris);
}
}


Y este es el archivo xml desde el cual hago referencia a los backgrounds de los views de todas las activities cuando se ejecuta por primera vez la app..



<?xmlversion="1.0"encoding="utf-8"?>
<selectorxmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:angle="90"
android:startColor="#EDEDED"
android:endColor="#F5F5F5"
android:type="linear" />
</shape>
</item>
</selector>
Responder Con Cita


  #2  
Viejo 26/03/14, 20:59:02
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Aquí es donde la herencia es tu amiga, creando una Activity abstracta y que todas las demás hereden de ahí, luego en el onResume de esa Activity abstracta cambias todos los elementos al "Theme" que tengas seleccionado en ese momento.

Cuando vuelvas hacia atrás o crees una Activity nueva siempre se ejecutará el onResume, con lo cual siempre se aplicará el nuevo Theme.

Yo hago algo parecido a lo que quieres hacer tú, y aplico este sistema (con los Fragment también lo hago), si quieres hacer algún cambio sólo tienes que hacerlo en una clase, y se aplicará al resto automáticamente.
Responder Con Cita
Respuesta

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



Hora actual: 23:37:32 (GMT +2)



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

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