Saltar la navegación

2.1.4. Recursos

Este término hace referencia a los datos que utiliza la aplicación, entendiendo como tal las imágenes, textos, estilos. Estos, junto con el código, configuran una aplicación.

Los recursos pueden estar predeterminados para la aplicación que se haya programado y se usarán siempre sin importar el tipo o la configuración del dispositivo sobre el que se vaya a ejecutar. O bien pueden crearse recursos alternativos, que son aquellos que se diseñan para usar con una configuración específica de dispositivo (tablet, pantallas grandes...), colaborando, en parte, con la responsividad de la aplicación.

Además, los recursos pueden estar gestionados por ficheros XML, deben tener asignado un identificador (id) y suelen estar alojados en una subcarpeta dentro de la carpeta principal denominada res. Los nombres de estas subcarpetas son limitados y predefinidos por Android.

Nunca se deben guardar archivos de recursos directamente dentro del directorio res/ ya que se produciría un error en la compilación.

En el listado que se muestra a continuación se relacionan las más frecuentes y el tipo de recurso que pueden contener:

  • Carpeta res/drawable: recursos dibujables, ficheros de bitmaps o de imágenes “escalables”. También pueden definirse aquí formas y colores de objetos dibujados.
  • Carpeta res/layout: definidos como ficheros XML. Engloban los elementos visuales que definen el interfaz de nuestra aplicación.
  • Carpeta res/animator: permite crear animaciones sencillas sobre uno o varios gráficos, como rotaciones, fading, movimiento y estiramiento. Cada animación se define en un fichero XML.
  • Carpeta res/mipmap: con contenido similar a drawable, el directorio mipmap alberga elementos bitmap, aunque se suele utilizar específicamente para ubicar el icono de la aplicación.
  • Carpeta res/menú: son ficheros XML donde se definen las diferentes opciones de los menús, submenús, barras de navegación incluidos en las aplicaciones.
  • Carpeta res/values: es una carpeta con carácter genérico con ficheros XML que configuran diferentes aspectos de la aplicación, como es el color, dimensiones, cadenas de texto, estilos.
  • Carpeta res/xml: almacena archivos XML utilizados por Android para dar soporte a tareas múltiples, como la que permite configurar búsquedas.
  • Carpeta res/raw: se usa para almacenar los archivos raw de la aplicación (audio y vídeo). Este directorio tiene ciertas limitaciones en cuanto al nombre de archivos que puede tener (mayúsculas, números, caracteres especiales), por lo que, si se necesita usar el nombre real del archivo, entonces se deben colocar los archivos raw en el directorio asset de Android.

Acceso a los recursos

Como se ha visto anteriormente, todos los recursos de tu aplicación tienen asignado un identificador (generalmente, Android lo hace de manera automática), por lo que quedan el tipo de recurso y su id registrados en el archivo de la clase R de la aplicación. Esto puede ser utilizado para acceder al recurso desde el código Java o XML de la manera que a continuación se expone.

Para acceder a los recursos en XML se debe escribir el nombre del recurso y la dirección del archivo donde este se encuentra. En el ejemplo siguiente, se ha definido en ficheros XML el color, el estilo y el contenido de la cadena de texto. Esto hace muy cómodo el realizar variaciones de las propiedades de este objeto (o aplicárselas a otros) sin tener que retocar el código Java de la aplicación.

<TextView
android:id=”@+id/texto”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:background=”@color/colorPrimario”
android:text=”@string/titulo”
style=”@style/EstiloTitulo”/>

En Java, para acceder a un recurso (getResources), se ha de localizar este a través de la clase R, al igual que en XML, indicando directorio (o fichero XML) y nombre del recurso.

getResources().getColor(R.color.colorPrimario);
getResources().getDrawable(R.drawable.dibujo);
miImagenView.setImageResource(R.drawable.imagen);

Ejemplo

Como se irá viendo, Android nos facilita multitud de recursos, que muchas veces costará trabajo localizar o identificar. Para acceder a ellos, se debe hacer de manera similar a la que ya se ha visto, pero anteponiendo al recurso la palabra android.

Aquí se muestra un ejemplo de cómo acceder al color negro que nos proporciona Android, tanto desde XML como desde Java.

android:textColor=”@android:color/black”
getResources().getColor(android.R.color.black);

Creado con eXeLearning (Ventana nueva)