Está en la página 1de 5

Recursos

La externalización de recursos es un elemento importante del desarrollo para Android (constantes,


imágenes, animaciones, menús, vistas...). Esta externalización le permite mantener y actualizar los
recursos más fácilmente.

El nombre de los archivos de recursos sólo puede contener letras minúsculas, cifras, un punto o
un underscore (_).

Las carpetas que contienen recursos pueden tener varias características propias en función del idioma,
del tamaño de la pantalla, del hardware, etc. Cada característica se separa mediante un guión (-).

A continuación se muestra una lista no exhaustiva de estas características:

Nombre de código de país.

Idioma.

Anchura mínima de la pantalla: por ejemplo sw<dimension>dp.

Anchura de la pantalla: por ejemplo w<dimension>dp.

Altura de la pantalla: por ejemplo h<dimension>dp.

Tamaño de la pantalla: small, medium, large o xlarge.

Orientación de la pantalla, etc.

Versión de Android (v14, v11, v8...).

1. Drawable
Esta carpeta se dedica, en gran parte, a la gestión de imágenes en una aplicación (véase el capítulo
Personalización y gestión de eventos - Personalización).

a. Gestión de diferentes resoluciones

Para gestionar las distintas resoluciones de una imagen en una aplicación, dispone del grupo de
carpetas drawable-xxx donde xxx puede reemplazarse por:

ldpi: para pantallas con una resolución baja (alrededor de 120 dpi).

mdpi: para pantallas con una resolución media (alrededor de 160 dpi).

hdpi: para pantallas con una resolución alta (alrededor de 240 dpi).

xhdpi: para pantallas con una resolución muy alta (alrededor de 320 dpi).

xxhdpi: para pantallas con una resolución muy, muy alta (alrededor de 480 dpi).

nodpi: contiene recursos que no dependen de la resolución de su dispositivo.

2. Values
Esta carpeta sirve para almacenar diferentes valores (constantes) y usarlos en la aplicación.

a. Cadenas de caracteres

Creación de cadenas de caracteres


Todas las cadenas de caracteres se almacenan en uno o varios archivos (strings.xml por defecto).
La elección del nombre del archivo es completamente libre, pero es imprescindible que se encuentre
en la carpeta values.

A continuación se muestra un ejemplo:

<?xml version="1.0" encoding="utf-8"?>


<resources>
<string name="nombre_string">texto_string</string>
</resources>

Una vez se ha declarado una cadena de caracteres, ya se puede usar desde:

Un archivo Java: R.string.nombre_string.

Un archivo XML: @string/nombre_string.

El framework Android proporciona varios recursos nativos que puede usar en su aplicación. Si
desea referenciar una cadena de caracteres proporcionada por el framework Android,
utilice@android:string/nombre_de_la_cadena.

Gestión de plurales

Para permitirle gestionar el plural de sus cadenas de caracteres, Android integra una etiqueta muy
práctica (plurals).

A continuación se muestra un pequeño ejemplo:

<?xml version="1.0" encoding="utf-8"?>


<resources>
<plurals name="num_de_tutos">
<item quantity="zero">No hay tutoriales
disponibles</item>
<item quantity="one">Hay un tutorial disponible</item>
<item quantity="other">Hay varios tutoriales
disponibles</item>
</plurals>
</resources>

El atributo quantity (cantidad) puede tener los siguientes valores:

zero: para el caso de cero elementos.

one: para el caso de un elemento.

two: para el caso de dos elementos.

few: para el caso de pocos elementos (tres o cuatro, por ejemplo).

many: para el caso de un gran número de elementos (diez o doce, por ejemplo).

other: para el resto de casos.

Para poder obtener estas cadenas de caracteres en su códig o, está disponible el


métodogetQuantityString.

public String getQuantityString(int id, int quantity);

Este método recibe por parámetro:

El identificador de la cadena deseada.


La cantidad deseada.

A continuación se muestra un ejemplo para la declaración anterior:

Resources res = getResources();


String numberOfTutos =
res.getQuantityString(R.plurals.num_de_tutos,
cantidadDeseada);

El método getResources permite acceder a los recursos desde una actividad.

La llamada al método getQuantityString permite obtener la cadena deseada.

Escapar los apóstrofes

Para incluir apóstrofes en una cadena de caracteres, debe escaparlos como se indica a
continuación:

<string name="apos1">"El ejemplo de un escape de apóstrofe (’)"</string>


<string name="apos2">El ejemplo de un escape de apóstrofe (\’)</string>

La primera forma de escapar apóstrofes en una cadena es incluyendo el texto entre comillas dobles.

La segunda manera de escapar apóstrofes es añadiéndoles una contrabarra (\) delante de cada
uno de ellos.

Añadir argumentos

Puede añadir argumentos a sus cadenas de caracteres para adaptarlas mejor a las distintas
situaciones que puedan darse en la aplicación.

A continuación se muestra un ejemplo:

<string name="reception_message">%1$s! Ha recibido %2$d


mensajes nuevos.</string>

La cadena de caracteres contiene dos argumentos:

El primero corresponde con una cadena de caracteres (%s).

El segundo con un valor entero (%d).

A continuación, en la aplicación, puede definir estos argumentos mediante el método format, que
toma como argumento la cadena de caracteres y los parámetros que se añadirán a la misma.

Resources res = getResources();


String message =
String.format(res.getString(R.string.reception_message), name,
newMsgNumber);

Tenga cuidado con el orden de los argumentos.

¿Y HTML?

Puede usar algunas etiquetas HTML para personalizar las cadenas de caracteres.

<?xml version="1.0" encoding="utf-8"?>


<resources>
<string name="bienvenido">Bienvenido a <b>tutos-
android.com</b>!</string>
</resources>

Las etiquetas soportadas son:

b: negrita

i: itálica

u: subrayado

Puede crear otro archivo para almacenar los valores enteros y booleanos, con el mismo
principio que para las cadenas de caracteres.

b. Tablas

Puede, fácilmente, almacenar tablas de cadenas de caracteres para los menús, listas o
desplegables. Para ello, utilice el archivo arrays.xml en el que puede almacenar tablas de cadenas
de caracteres.

A continuación se muestra un ejemplo de archivo arrays.xml:

<resources>
<string-array name="day">
<item>Lunes</item>
<item>Martes</item>
<item>Miércoles</item>
<item>Jueves</item>
<item>Viernes</item>
<item>Sábado</item>
<item>Domingo</item>
</string-array>
</resources>

También puede declarar tablas de enteros, por ejemplo.

c. Dimensiones

Durante la creación de una aplicación Android, tendrá que definir varios valores para los tamaños o
espacios de diferentes elementos. Para factorizar su código, puede crear el archivo dimens.xml, en
el que almacenará y utilizará las diferentes dimensiones.

A continuación se muestra un ejemplo del contenido del archivo dimens.xml:

<resources>
<dimen name="anchura_boton">60dp</dimen>
<dimen name="altura_boton">35dp</dimen>
</resources>

Y un ejemplo de uso de estos valores en una interfaz:

<Button
android:layout_width="@dimen/anchura_boton"
android:layout_height="@dimen/altura_boton"
android:text="@string/btn" />

El uso de dimensiones se realiza mediante una llamada al recurso "dimen" y especificando el


identificador del valor deseado.

Para declarar las dimensiones utilizadas en la aplicación, puede usar las siguientes unidades:

px: píxeles - se corresponde con los píxeles reales de la pantalla.

in: pulgadas - basado en el tamaño físico de la pantalla.

pt: punto.

mm: milímetro.

dp: densidad de píxeles independientes - recomendado para mostrar elementos.

sp: escala de píxeles independientes - recomendado para el tamaño de fuentes.

Este archivo también le permite gestionar las diferencias de tamaño de pantalla, creando
distintas carpetas. Por ejemplo, puede crear un archivo dimens.xml en la carpeta values-large
para gestionar las pantallas grandes.

d. Colores

Puede almacenar todos los colores que utilice su aplicación en un archivo de recursos para
externalizarlos y utilizarlos más fácilmente.

<resources>
<color name="red">#F00</color>
</resources>

La especificación de colores puede realizarse de varias formas:

#RGB

#RRGGBB

#ARGB

#AARRGGBB

R: Rojo, G: Verde, B: Azul, A: Transparente

También podría gustarte