Android desde Cero: Cómo Usar Recursos en una Aplicación
() translation by (you can also view the original English article)
Cualquier aplicación que usted desarrolle tendrá que incluir algún tipo de valores y recursos locales, tales como strings, imágenes (incluso si es solo un icono para una aplicación) y colores. En este tutorial, usted aprenderá sobre los recursos en Android y cómo usarlos en sus aplicaciones para mostrar contenido a los usuarios, controlar diferentes tamaños de dispositivos y ofrecer soporte a usuarios a través de varios idiomas.
¿Encuentra más fácil aprender con vídeos? Porqué no revisa nuestro curso:
1. Añadiendo Recursos a Proyectos
Cuando usted crea un proyecto en Android Studio, usted recibe dos directorios principales en su proyecto para los archivos fuentes en java y res. Aquí res significa recursos y, como su nombre supone, contiene los recursos para el proyecto. En el contexto de Android, un recurso es un archivo que presenta algo que puede ser dibujado en pantalla, un formato de archivo para sus clases o un valor que puede ser asociado en su aplicación, tal como un string o valor hexadecimal para un color. En esta sección, aprenderá acerca de varios tipos de recursos disponibles para su aplicación.
Tipos de Recursos
Para usar los recursos en un proyecto Android, usted necesita organizarlos en sub-directorios en la carpeta res. La estructura del directorio de recursos de un proyecto estándar de Android puede lucir así:



Hay un número limitado de nombres de directorios que tienen soporte por el sistema de recursos de Android y comprenderlos es necesario mientras continúe en el desarrollo de aplicaciones Android. Vamos a echar un vistazo a ellos con más detalles.
- animator: El directorio de recurso animator puede contener archivos XML que definen las animaciones para los objetos
View
en su aplicación. En lugar de definir las animaciones una y otra vez en su código Java, usted puede importar un archivo animator XML en cada lugar que usted necesita para usar una animación específica. Si usted decide cambiar la animación luego, entonce puede cambiarla en una ubicación en su aplicación en lugar de hacerlo en muchas ubicaciones. - color: Aunque puede guardar valores de colores hexadecimales en el directorio values, el directorio color es utilizado para almacenar archivos XML que están corelacionados con estados de información con colores específicos. Esto es útil si necesita cambiar el color de una texto de un
View
o el color de fondo cuando ha tocado para proporcionar un comentario para el usuario. - drawable: Si su aplicación requiere recursos de imágenes locales, como JPGs y PNGs, entonces necesita colocarlas en la carpeta drawable. Además, aquí es donde coloca los archivos XML que definen la forma y el color de los dibujos o imágenes que están dibujadas en código.
- mipmap: Similiar a drawable, el directorio mipmap acepta elementos bitmap, sin embargo, éste es utilizado específicamente para inicializar un icono. Esto es necesario debido a que Android usa imágenes de un tamaño más grande que la que los dispositivos por lo general usan para inicializar iconos.
- layout: El directorio layout contiene los archivos XML que definen su interfaz de usuario de su aplicación.
- menu: Los archivos Menu XML son utilizados para la definición de acción de los menús, sub-menús y barras de navegación. Estos recursos son colocados en el directorio de recursos menu.
- raw: El directorio raw es utilizado para almacenamiento arbitrario de archivos raw para su aplicación tales como audio, vídeo, y archivos de texto. Este proporciona una forma fácil para acceder a archivos, aunque si usted necesita acceder al nombre del archivo original o a la jerarquía del directorio, entonces debería de considerar colocar sus archivos raw en el directorio asset de Android.
- xml: Este directorio almacena archivos arbitrarios XML utlizados por Android para varias tareas tales como definir las configuraciones de búsqueda o capacidades externas, tales como el uso de Android Auto.
Valores
Si bien la lista anterior de los recursos de directorios disponibles es bastante larga, hay un directorio más que estará usando a menudo en desarrollador de Android y ese directorio es values. El directorio values puede contener muchos archivos XML que consisten de valores simples que son usados dentro de sus aplicaciones, incluyendo:
- arrays: Simples objetos arrays que pueden ser leídos en su aplicación.
- colors: Nombrado color de valores hexadecimales que puede ser utilizado en múltiples ubicaciones dentro de su aplicación.
- dimens: Las dimensiones pueden definir cualquier tamaño relacionado en Android, incluyendo los tamaños de los textos y de los padding.
- integers: Si hay enteros específicos que necesita usar en su aplicación, entonces usted puede almacenarlos en el archivos de recursos de enteros para que sean más fáciles de encontrar y cambiar después en su proceso de desarrollo.
- strings: Los Strings son una necesidad en cualquier aplicación Android que usted construya. En vez de esparcirlos en su código base, usted puede conservar los strings en el archivo strings.xml.
- plurals: Similar a los strings, los plurals le permiten proporcionar strings alternativos cuando un número está pausado dentro de una función de recuperación. Esto maneja las situaciones donde un cuantificador string cambiaría mediante el número de elementos que éste representa.
- styles: Cualquier aplicación que usted construya, necesitará un estilo y un toque consistente y esto puede ser logrado a través del uso del archivo styles.xml. Al usar los estilos, usted puede anular los estilos por defecto y buscar componentes y atributos predefinidos que puedan estar asociados con diferentes objetos
View
en archivos layout.
Como puede ver, el esquema de recursos de Android es extenso. A medida que continúe desarrollando aplicaciones Android, encontrará más y más usos para los archivos de recursos y valores para hacer el desarrollo y el mantenimiento de su aplicación más rápida y más fácil.
2. Accediendo a los Recurso
Ahora que sabe como añadir recursos a su aplicación, usted necesita poder acceder a ellas. Todos los recursos almacenados en su aplicación están, automáticamente asignados a un nombre identificable y consistente del tipo de recurso, tal como drawable o layout y el id en el archivo R de la aplicación. El archivo R es un archivo generado por la herramienta Android Asset Packaging, o aapt, durante la compilación. Este nombre generado puede ser utilizado para acceder al recurso en el código de Java u otro archivo de recurso XML.
Teniendo acceso a los Recursos en Java
Muchos objetos en Android están construidos con identificadores de recursos en mente y aceptan el id para el recurso con el fin de usar ese recurso. Un ejemplo de esto es la configuración de un ImageView
para usar un recurso de dibujo para pasarlo en el id R.
1 |
mImageView.setImageResource(R.drawable.test); |
De manera similar, un objeto MediaPlayer
(utilizado para reproducir audio o vídeo) puede ser creado para reproducir un archivo raw al pasarlo en el archivo con el id R.
1 |
MediaPlayer.create(getActivity(), R.raw.sample_media) |
Si bien un gran número de objetos acepta un recurso id, hay ocasiones donde usted quiere recuperar el recurso original en su código. Usted puede hacer esto usando el método getResources()
que está disponible en el objeto Context
de Android. Este devuelve un objeto Resources
con múltiples métodos para acceder a recursos de aplicaciones locales, tales como getColor()
y getDrawable()
.
1 |
getResources().getColor(R.color.colorPrimary); |
2 |
getResources().getDrawable(R.drawable.kittens); |
Accediendo a los Recursos en XML
La mayoría de las veces, cuando usted está usando recursos, éste estará en otros archivos XML. Al definir los colores, estilos, texto o cualquier otro recurso que es utilizado en varios lugares de su aplicación, los vuelve más simple al permitirle cambiar un valor y tenerlo a través de su aplicación. Por fortuna puede acceder a los recursos en un atributo XML pasando el id a una casilla que espera un recurso id.
1 |
<TextView
|
2 |
android:id="@+id/tv_test" |
3 |
android:layout_width="wrap_content" |
4 |
android:layout_height="wrap_content" |
5 |
android:background="@color/colorPrimary" |
6 |
android:text="@string/title" |
7 |
style="@style/TitleStyle"/> |
3. Proporcionando Recursos Alternativos
Casi todas las aplicaciones que usted construya deberán manejar varios tamaños de dispositivos, configuraciones e idiomas de usuarios. Añadiendo cuantificadores específicos al final de un directorio de recurso, el sistema Android prioriza esos recursos cuando ciertas condiciones se encuentran.
Densidad de Pantalla
Para evitar la pixelación, los recursos bitmap que usted cree para sus aplicaciones deberán ser hechas por una densidad de pixel específico. Al añadir, -ldpi, -mdpi, -hdpi y otros cuantificadores para la carpeta directorios, como vimos en la imagen mipmaps al comienzo de éste artículo, el sistema Android sabe cual recurso usar para cualquier dispositivo en particular que ejecute su aplicación.
Idiomas de Usuarios
Puede crear directorios de valores individuales para cada idioma que su aplicación tenga soporte, por medio de añadir un lenguaje de código al final del nombre del directorio, por ejemplo; values-fr o values-es para Francés y Español.
Cuando un usuario tenga sus conjuntos de idiomas a uno de estos idiomas, el sistema proporciona cualquier valor en el nuevo recurso de directorio para el usuario en vez de los valores por defecto. Esto es útil para volver a colocar recursos string con traducciones adecuadas.
Tabletas y el Soporte de Orientación
Puede añadir -land a un directorio de recurso para que esos valores desactiven los valores por defecto cuando un dispositivo esté en modo apaisado. Además, puede definir una anchura mínima para un dispositivo para un directorio de recurso para desactivar los valores por defecto con el objetivo de tener soporte para las tabletas al añadir -sw600dp para tabletas de tamaño medio (tales como Nexux 7) y -sw720dp para tabletas más grandes.
En conclusión
Cualquier aplicación que usted construya incluirá recursos y comprender cómo puede acceder a ellos y a las configuraciones de soporte de varios dispositivos es una parte importante de ser un desarrollador Android. En este artículo usted aprendió que tipo de recursos puede ser incluido en una aplicación, como puede acceder a ellas en Java y en XML, y como desactivar los recursos en situaciones específicas.