Después de aprender a crear un nuevo proyecto en Android, hemos visto la estructura de directorios de un proyecto y su finalidad. Ahora profundizaremos aún más en uno de esos directorios, aprendiendo qué es y para que sirve la carpeta Values en Android Studio.
¿Qué es la carpeta Values en Android Studio?
El directorio Values contiene los valores de nuestro proyecto, definiendo los nombres de las variables que serán referenciadas más tarde en el código. Estas variables por ejemplo, pueden ser cadenas de texto e incluso valores constantes.
¿Qué archivos contiene el directorio Values?
- arrays.xml : Archivo XML que define series de valores que serán usados de forma conjunta. Por ejemplo, una lista de archivos de iconos, o una lista de opciones par amostrarle al usuario.
- colors.xml : Archivo XML que define los valores de los colores que son usados en la aplicación. Esto permite estandarizar la interfaz de usuario.
- dimens.xml : Archivo XML que define las dimensiones, tanto alturas como tamaños de fuentes de la interfaz de usuario.
- strings.xml : Archivo XML que define cadenas de texto usadas en la aplicación. Por ejemplo, para colocar los títulos de las ventanas o el nombre de la aplicación y referenciarlas cuando lo nececesites en el código.
- styles.xml : Archivo XML que define los estilos usados en la aplicación. Estos estilos pueden ser aplicados a los elementos de la interfaz de usuario, de modo que separamos la plantilla de las funcionalidades. Lo cual hace nuestra aplicación más fácil de mantener.
¿Qué valores puedo almacenar y cómo puedo utilizarlos?
Bool
En este XML podemos almacenar los valores booleanos que queramos utilizar en nuestro proyecto. Crearemos un ejemplo«res/values/valores_booleanos.xml» con el siguiente código XML:
1 2 3 4 5 |
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="soy_aadesigners">false</bool> <bool name="entiendo_elejemplo">true</bool> </resources> |
Ahora veamos como útilizarlo en el código java:
1 2 |
Resources res = getResources(); boolean screenIsSmall = res.getBoolean(R.bool.soy_aadesigners); |
Color
En este recurso XML almacenaremos todos los colores en su valor hexadecimal que usaremos en nuestra aplicación. Deben ser almacenados en el fichero «res/values/colors.xml». Veamos un pequeño ejemplo:
1 2 3 4 5 |
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_rojo">#f00</color> <color name="color_androistudiofaqs">#80ff0000</color> </resources> |
Uso en el código java:
1 2 |
Resources res = getResources(); int color = res.getColor(R.color.color_rojo); |
Uso en un layout:
1 2 3 4 5 |
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/color_rojo" android:text="Hola! esta es una prueba de aadesigners"/> |
Dimension
Este recurso XML almacena los valores de las dimensiones que queramos utilizar. Estos valores pueden ser: dp (Density-independent Pixels), sp (Scale-independent Pixels), pt (Points), px (Pixels), mm (Millimeters) e in (inches).
Crearemos un ejemplo llamado«res/values/lista_dimensiones.xml» como este:
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="alto_icono">25dp</dimen> <dimen name="ancho_icono">150dp</dimen> <dimen name="icono_aadesigners">30dp</dimen> <dimen name="tamano_letra">16sp</dimen> </resources> |
Uso en el código java:
1 2 |
Resources res = getResources(); float fontSize = res.getDimension(R.dimen.tamano_letra); |
Uso en un layout:
1 2 3 4 |
<TextView android:layout_height="@dimen/textview_height" android:layout_width="@dimen/textview_width" android:textSize="@dimen/tamano_letra"/> |
ID
Este recurso XML nos ofrece la posibilidad de tener un identificador único para los recursos de la aplicación y sus componentes. Crearemos un fichero«res/values/lista_ids.xml» con este código:
1 2 3 4 5 |
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="button_aadesigners" /> <item type="id" name="dialog_exit" /> </resources> |
Aquí un ejemplo con un botón:
1 2 |
<Button android:id="@id/button_aadesigners" style="@style/button_style" /> |
Y aquí con un diálogo:
1 |
showDialog(R.id.dialog_exit); |
Integer
Con este recurso XML podemos almacenar números enteros y referenciarlos mediante su nombre de manera cómoda. Veremos un ejemplo sencillo de este recurso creando un archivo al que llamaremos «res/values/lista_integers.xml» con este código XML:
1 2 3 4 5 |
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="max_speed">75</integer> <integer name="min_speed">5</integer> </resources> |
Un ejemplo de uso en código java:
1 2 |
Resources res = getResources(); int maxSpeed = res.getInteger(R.integer.max_speed); |
Integer Array
Veamos también como combinar el apartado anterior con un array. Un array de números enteros. Para ello crearemos un fichero llamado «res/values/array_de_enteros.xml» con el siguiente código XML:
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="aadesigners_enteros"> <item>1</item> <item>2</item> <item>3</item> <item>4</item> </integer-array> </resources> |
Y un ejemplo de uso en el código fuente:
1 2 |
Resources res = getResources(); int[] enteros = res.getIntArray(R.array.aadesigners_enteros); |
Typed Array
Una variación del anterior es el siguiente array tipado. Es nos permite la creación de arrays de otros recursos, por ejemplo, de los drawables. Veamos un ejemplo al que daremos el nombre de «res/values/array_tipado.xml» con el siguiente código fuente XML:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/logo_aadesigners</item> <item>@drawable/Salir</item> <item>@drawable/Adelante</item> </array> <array name="colores"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources> |
Y un uso práctico en el código java:
1 2 3 4 5 6 |
Resources res = getResources(); TypedArray icons = res.obtainTypedArray(R.array.icons); Drawable drawable = icons.getDrawable(); // 1º elemento de nuestro array de iconos TypedArray colors = res.obtainTypedArray(R.array.colors); int color = colors.getColor(,); //1º elemento del array de colores |
Con esto terminamos la explicación de qué es y para qué sirve la carpeta Values en Android Studio. El uso de estos recursos optimiza el código, por lo que es de vital importancia exprimir estas posibilidades al máximo, ya que nos hará mucho más sencilla la tarea de programar.
¿Os ha gustado la explicación sobre qué es la carpeta Values en Android Studio? Esperamos vuestras preguntas o recomendaciones en los comentarios.
[…] XML que definen valores constantes y que ya hemos detallado. Se encuentran en: […]
Excelente explicación
Aparte del archivo string que otro archivo se alojan los ID de publicidad de admob. No los puedo encontra . HELP