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