Imprimir

Es recomendable almacenar de forma externa los recursos como imágenes o cadenas de caracteres que vayas a utilizar en la aplicación respecto al código fuente de la misma. De esa manera puedes proporcionar recursos alternativos que soporten configuraciones específicas de los dispositivos tales como diferentes lenguajes o tamaños de pantalla. Para proporcionar compatibilidad entre las diferentes configuraciones que ofrecen los dispositivos Android, debes organizar los recursos en la carpeta res del proyecto, usando varias subcarpetas que agrupen los recursos por tipo y configuración.

Agrupamiento de recursos

Cada tipo de recurso debe almacenarse en una subcarpeta específica dentro de la carpeta res del proyecto. Por ejemplo, en un proyecto sencillo se puede tener una estructura de recursos como la siguiente:

recursos01 studioRes01

En la imagen puedes ver que la carpeta res contiene todos los recursos, organizados en subcarpetas. Es importante respetar el nombre de las carpetas creadas para almacenar los recursos. Los nombres que puedes utilizar son los siguientes (se indica el tipo de archivos que deben contener):

Recursos alternativos

Para cualquier tipo de recurso, puedes especificar cuáles van a ser los recursos usados por defecto y los recursos alternativos. Los recursos usados por defecto son aquellos que deberían ser usados sin considerar la configurar específica del dispositivo o cuando no hay recursos alternativos que coincidan con la configuración actual. Los recursos alternativos son aquellos que has diseñado para que sean usados con una configuración específica. Para especificar que un grupo de recursos están asociados a una configuración específica, debe añadir un sufijo al nombre de la carpeta relacionándola con una determinada configuración. Se debe seguir el siguiente formato para nombrar la carpeta:

res/tipoRecurso-cualificador

Por ejemplo, mientras la estructura del intefaz de usuario (layout) está guardada en la carpeta res/layout, puedes especificar un layout diferente para ser usado cuando la pantalla esté en sentido apaisado, para lo cual debes guardarlo en la carpeta res/layout-land.

Android aplicará automáticamente los recursos apropiados relacionando la configuración actual del dispositivo con los nombres de las carpetas de recursos.

En las siguientes imágenes puedes ver cómo el sistema aplica el layout a dos dispositivos diferentes. En el primer caso, se muestra la situación en la que no hay recursos alternativos disponibles, por lo que se aplica el mismo layout. Pero en el segundo caso hay un recurso de layout alternativo para pantallas grandes, por lo que se utilizan layouts diferentes.

resource devices diagram1 resource devices diagram2

(Imágenes tomadas de la web developer.android.com)

A continuación puedes encontrar los posibles nombres de cualificadores que puedes usar, agrupados por categorías:

Los nombres de cualificadores deben seguir además una reglas:

Android utilizará automáticamente en la aplicación los recursos basados en la configuración actual del dispositivo. Cada vez que se solicita un recursos, Android comprueba si hay carpetas de recursos alternativos que contengan el recurso solicitado y entonces localiza el recurso que mejor se adapta a la configuración actual. Si no hay recursos alternativos para la configuración actual, Android usará los recursos correspondientes por defecto (los que no incluyen un cualificador).

Creación de carpetas de recursos

Una manera sencilla de crear las carpetas de recursos usando diferentes cualificadores es usando el asistente que ofrece Android Studio. Haciendo clic derecho sobre la carpeta de recursos (res), puedes seleccionar la opción New > Android recource directory (también accesible desde el menú File > New).

studioRes02

Aparecerá una ventana de diálogo donde puedes seleccionar el tipo de recursos que vas a almacenar en la carpeta (Resource type), y los cualificadores deseados para esa carpeta que debes ir seleccionando de la lista de cualificadores disponibles (Available qualifiers). Con los botones de las flechas a derecha o izquierda podrás ir seleccionando y eliminando los cualificadores deseados que aparecerán en la lista de cualificadores elegidos (Chosen qualifiers). Según el tipo de cualificador elegido, en la parte más derecha deberás indicar el valor concreto para ese cualificador. A medida vayas realizando las selecciones deseadas, irá cambiando automáticamente el nombre de la carpeta que aparece en la parte superior (Directory name).

studioRes03

Al finalizar podrás ver la carpeta que se habrá creado dentro de la carpeta res, con el nombre en función del tipo de recurso seleccionado y los cualificadores elegidos.

studioRes06

Creación de archivos de recursos

De manera similar a la creación de carpetas de recursos, se pueden crear directamente archivos de recursos usando el asistente de Android Studio. El archivo que se genere se almacenará automáticamente en la carpeta correspondiente al tipo de recurso y cualificadores seleccionados. Si la carpeta no existiera se creará también de forma automática.

En este caso deberás seleccionar, en el menú contextual de la carpeta res, la opción New > Android resource file.

studioRes04

Al igual que en el caso anterior, podrás seleccionar el tipo de recurso y los cualificadores deseados, pero además deberás indicar el nombre del archivo.

studioRes05