android

Programación Android: Recursos - Plurales

Introducción

Los recursos Plurals son un conjunto de strings. Estos strings representan una forma de escribir cantidades numéricas, por ejemplo, cuantos huevos hay en una cesta. Vamos a ver un ejemplo:

  • Hay 1 huevo
  • Hay 2 huevos
  • Hay 10 huevos

Como puedes notar, las frases son iguales para los números 2 y 10. Sin embargo, la frase para 1 huevo es diferente. Android permite representar esta variación con el recurso llamado plurals. En el siguiente ejemplo vemos como se representan estas dos variaciones.

android

Programación Android: Recursos - Recursos y cambios de configuración

Los recursos ayudan a la localización. Por ejemplo, podemos tener valores para strings que cambien en función del idioma configurado en el terminal. Los recursos Android generalizan esta idea para cualquier configuración del dispositivo, el idioma es tan solo otra configuración más. Otro ejemplo de cambios de configuración se dá cuando el dispositivo cambia de posición (de vertical a horizontal o viceversa). El modo vertical se suela llamar portrait y el horizontal landscape.

Android permite elegir distintas configuraciones de layout basandose en el tipo de layout. Y ambos tendrán el mismo ID de recurso. Esto se consigue usando directorios diferentes para cada configuración. Vamos a verlo con un ejemplo:

android

Programación Android: Recursos - Repasando la estructura del directorio de recursos

En resumen, en el siguiente listado muestra la estructura global del directorio de recursos: /res/values/string.xml /colors.xml /dimens.xml /attrs.xml /styles.xml /drawable/*.png /*.jpg /*.gif /*.9.png /anim/*.xml /layout/*.xml /raw/*.* /xml/*.xml /assets/*.*/*.* Debido a que no se encuentra bajo el directorio /res, solo el directorio/assetspuede contener una lista arbitrária de directorios. Cualquier otro directorio solo puede contener ficheros en ese nivel, y no mas subdirectorios Siguiente Tema: Programación Android: Recursos - Recursos y cambios de configuración

android

Programación Android: Recursos - Sintaxis de los Recursos

Independientemente del tipo de recurso (de string y layout son los dos que hemos visto hasta ahora), Todos los recursos Android están identificados (o referenciados) por sus ids en código fuente Java.

La sintaxis que usamos para crear un ID de recurso en un fichero XML se llama resource-reference syntax (sintaxis de referencia a recurso). La sintaxis del atributo id que vimos anteriormente (@+id/text1) tiene la siguiente estructura formal:

android

Programación Android: Recursos - Strings

Introducción

Como ya hemos visto, los recursos juegan un papel muy importante en la arquitectura Android. Un recurso en Android es un archivo (como un fichero de música) o un valor (como el título de un Diálogo) que está ligado a una aplicación ejecutable. Estos archivos están ligados a un ejecutable de tal manera que podemos cambiarlos sin necesidad de recompilar la aplicación.

Los ejemplos de recursos más familiares son cadenas de texto, colores e imágenes. En lugar de escribir las cadenas de texto en el código fuente, usamos sus IDs. Esta indirección nos permite cambiar el valor de la cadena sin tener que cambiar el código fuente.

Existen mucho recursos en Android, que vamos a ver a lo largo de las etradas posteriores. Empezaremos por un recurso muy común, los string:

android

Programación Android: Recursos - Trabajar con recursos Assets

Android ofrece más de un directorio en el que guardar ficheros que se incluirán en el paquete.: /assets. Está en el mismo nivel que el directorio /res, lo que significa que no es parte de los subdirectorios del mismo. A los archivos colocados en en el directorio /assets no se les generan IDs en R.java. Somos nosotros los que debemos especificar la ruta para leerlo. La ruta al fichero es una ruta relativa que comienza con /assets. Debemos usar la calse AssetManager para acceder a estos ficheros, como se muestra en el código de abajo:

android

Programación Android: Recursos - Trabajar con recursos RAW

Los recursos Raw se colocan bajo el directorio ./res/raw. Son recursos raw archivos como ficheros de audio, vídeo o archivos de texto que requieran localización o ser referenciados mediante IDs de recursos.

A diferencia de los archivos XML, colocados en ./res/xml, estos archivos no se compilan, se mueven al paquete de la aplicación tal y como son. Sin embargo, a cada fichero se le asignará un identificador en la clase R.java. Si colocamos un archivo de texto en ./res/raw/test.txt, podremos leerlo usando el código de abajo:

android

Programación Android: Recursos - Trabajar con recursos XML arbitrarios

Además de los recursos estructurados que hemos ido viendo, Android permite usar archivos XML arbitrarios como recursos. Esto proporciona una forma rápida de referenciar los archivos basandose en su Id de recurso así como permitirnos localizar estos archivos de una manera sencilla. Como última ventaja, nos permite compilar y almacenar estos archivos en el dispositivo eficientemente.

Los ficheros XML que se lean de esta manera, tiene que almacenarse bajo el directorio ./res/xml. A continuación vamos a ver un ejemplo:

android

Programación Android: Recursos - Usando recursos

A todos los recursos que colocamos en las subcarpetas de ./res/ se puede acceder a través de la clase R de nuestro proyecto.

Esta clase R la genera el comando aapt en una pasada anterior a la compilación (Eclipse, por defecto, la va generando continuamente conforme cambiamos los recursos). Contiene todos los identificadores de recursos para poder referenciarlos.

Al igual que la carpeta “res”, la clase R se organiza en subclases, así por ejemplo el icono que colocamos en ./res/drawable/icon tiene su correspondencia en R.drawable.icon (que es un identificador estático de tipo int y sirve para acceder al recurso).

android

Programación Android: Recursos compilados y no compilados

Android soporta principalmente dos tipos de recursos: archivos XML y archivos raw (como imágenes, audio y vídeo). Incluso dentro de los archivos XML, has podido ver que en algunos casos los recursos están definidos como valores dentro del archivo XML (las cadenas de texto, por ejemplo). En otras ocasiones, un archivo XML es un recurso por sí mismo, como los Layout.

Podemos encontrar dos tipos de archivos XML: uno se compilará a un formato binario y el otro se copiará tal como es al dispositivo. Como ejemplo podemos poner los ficheros XML de recursos string y los ficheros de layout, ambos se compilarán a un formato binario antes de formar parte del paquete de instalación. Estos ficheros XML tienen formatos predefinidos en los que los nodos XML se traducen a IDs.

android

Programación Android: StrictMode

Android 2.3 introdujo una funcionalidad de depuración llamada StrictMode. Según Google, usaron esta característica para hacer cientos de mejoras a sus aplicaciones Android. Lo que hace el StrictMode es informar de las violaciones de políticas relacionadas con los hilos y la máquina virtual. Si se detecta dicha violación, obtenemos una alerta que nos lo indica. Junto a la alerta tendremos también una traza de la pila de ejecución (Stack Trace), donde podremos comprobar el lugar en el que se produjo la violación. En ese momento, podemos forzar el cierre de la aplicación o simplemente escribirla en el log y dejar que la aplicación continue su ejecución.

Actualmente hay dos tipos de políticas disponibles para usar con StrictMode. La primera de ellas es referente a los hilos y está destinada principalmente a ejecutarse en el hilo principal, también conocido como el hilo de UI (User Interface).

android

Programación Android: Trabajar con actividades y pasar parámetros entre ellas

En el primer capítulo, vimos como crear nuestro primer proyecto en Android, el conocido Hola Mundo, en esta entrada, vamos a ver como crear varias actividades y cómo hacer que se pasen parámetros las unas a las otras.

El proyecto con este ejemplo está disponible para su descarga (Comentado paso a paso):

Download “Capitulo2 Intents Y Bundles” capitulo2_intents_y_bundles.zip – Downloaded 1272 times –

Voy a explicar un poco por encima que hace cada fichero del proyecto: