notifications Notificaciones

Marcar todas como leídas

Ver más

lightbulb_outline

Manejar colores en android

timer 2 Min.

remove_red_eye 1212

calendar_today 29/10/19

Vamos a trabajar en el archivo color.xml

Este se encuentra en “res” en la carpeta “values” como pueden ver aparece el archivo colors.xml lo abrimos si no tienen el archivo no se preocupen vamos a crearlo damos click derecho en values | New | Values resource file | colocamos el nombre que será “color.xml” damos clic en “ok”, como pueden ver ya se creo nuestro archivo. el nodo raíz debe ser sino agregamos la siguiente línea.

 <resources>
 </ resources>

En este archivo xml vamos a definir los colores que usará nuestra la aplicación porque es importante usar este archivo vamos a ver un ejemplo en mi aplicación todos los botones serán de color naranja agregamos el color android:background="#FF8000"

<Button android:id=" ‘@’+id/btnSave"
        android:text="Guardar"
                android:background="#FF8000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

Ahora, después de un tiempo ya no me gusta el color naranja y quiero que mis botones sean rojos, tendríamos que cambiar el color en cada botón a #FF0040, eso sería algo tedioso y cabe la probabilidad que algún botón todavía mantenga el color naranja, en este momento es donde el archivo colors.xml es de mucha ayuda.

Los colores pueden tener los siguientes formatos:

El formato más simple es #RGB, donde # 000 es negro y #FFF es blanco. Con este formato podemos utilizar usar 4096 colores, después tenemos el formato #RRGGBB este es el más común, con este podemos realizar 16 777 216 colores en total. El negro es # 000000 y el blanco es #FFFFFF, tenemos otros dos pero no son tan comunes #ARGB y #AARRGGBB lo usaremos cuando necesitemos colores transparentes o semitransparentes. Ahora vamos agregar el color naranja dentro de las etiquetas resource.

 <resources>
<color name="orange">#FF8000</color>
 </ resources>

El elemento será color y agregaremos el atributo name, este atributo funciona como el id de nuestro color nos ayudará a identificarlo, solo podemos agregar letras, números pero no al inicio y guión bajo para separar palabras, dentro de las etiquetas agregamos el color en este caso naranja, también podemos cambiar el color dando click encima del color nos aparece una paleta de colores.
Ahora vamos a llamar los colores en nuestro diseño de la siguiente manera: android:background="‘@’color/orange"

<Button android:id="‘@’+id/btnSave"
        android:text="Guardar"
                android:background="‘@’color/orange"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

Colocamos nuestro atributo que será background, para acceder a los recursos tenemos que colocar “@” como pueden ver nos aparece el color que acabamos de agregar, seleccionamos y nos vamos a diseño para ver que nuestro color se agregó correctamente.

Vamos a ver ejemplos con colores transparentes o semitransparentes usando el formato #AARRGGBB

<color name="transparent">#00000000</color>
<color name="semi_transparent">#20000000</color> //80% Transparent

Si aumenta el valor menos transparente será nuestro color, ejemplos.

<color name="semi_transparent">#50000000</color> // 50% Transparent
<color name="semi_transparent">#80000000</color> //20% Transparent

Los colores también los podemos usar directamente en nuestro activity recuerdan que ya cargamos nuestro recurso xml llamando nuestro botón puede haber momentos en el que nosotros necesitemos que se cumplan ciertas condiciones para que se muestre un color por ejemplo si es verano que el botón sea de color naranja y si es invierno de color celeste, los colores los vamos a necesitar en la parte de java en nuestro activity, nos vamos a MainActivity

getResources().getColor(R.color.orange);

Cuando nosotros agregamos esta linea nos aparece tachado el método color quiere decir que está obsoleto, porque en la versión Marshmallow se agregó un nuevo método este es el

getColor(R.color.orange);

pero este metodo solo lo podemos usar en una aplicación con nivel de API mayor al 23 por eso tenemos que hacer una validación.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
   getColor(R.color.orange);
}else{
   getResources().getColor(R.color.orange);
}

Podríamos crear un método para esta validación y ya no realizarlo en casa activity pero android agregó en la bibliote support-v4 un nuevo método que hace esto:

ContextCompat.getColor(getApplicationContext(), R.color.orange);

Otros artículos del blog

Comunidad