martes, 21 de enero de 2014

Recursos

Es posible utilizar en una aplicación Android ficheros XML para especificar distintos tipos de recursos. Estos ficheros deben encontrarse en la ubicación /res de la aplicación, organizados en función del tipo de recurso que representan en subcarpetas cuyo nombre indica qué elementos proporcionan a la aplicación:
Carpeta
Recurso
animator
Animación de propiedades
anim
Animaciones por interpolación
color
Colores
drawable
Imágenes
layout
Layout
menu
Menús
raw
Otros elementos
values
Ficheros de valores
xml
Otros ficheros XML


Dentro de la carpeta values se pueden encontrar ficheros de distintos tipos, como por ejemplo los ficheros de recursos String que contienen las cadenas de caracteres que se usan en la aplicación. Es una práctica muy recomendable utilizar ficheros de recursos para los títulos, etiquetas, mensajes y cualquier otro tipo de elemento textual de la aplicación de forma que facilite el mantenimiento en caso de modificación de los mismos, la reutilización en distintos elementos gráficos, así como la traducción en caso de aplicaciones multi-idioma.

Lo mínimo necesario

Un fichero strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Título</string>
<string name="my_button_text">Botón</string>


Referenciar a las cadenas desde cualquier otro fichero de recurso de la app:
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_button_text"/>


También se puede hacer referencia a los recursos desde código fuente:
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello_message);

Adaptación de recursos e Internacionalización

Android está presente en dispositivos con distintas capacidades y que se emplean con distintas configuraciones y en distintas localizaciones geográficas. Para llegar a la mayor cantidad de usuarios y dispositivos, la aplicación debe manejar texto, archivos multimedia o gráficos teniendo en cuenta distintas características de pantalla, versiones de sistema operativo, estado, localización o cualquier tipo de criterio que pueda motivar distintos recursos para la aplicación.

En Android, gracias a la separación entre los ficheros de recursos y el código con la funcionalidad de la app, esta adaptación resulta sencilla y limpia, siempre que se sigan los criterios necesarios a la hora de organizar la información. Se consideran recursos las cadenas de texto, diseño, sonidos, gráficos y cualquier otro dato estático de la aplicación susceptible de estar sujeto a cambios por adaptación o localización. Cuando el usuario ejecuta la aplicación, Android selecciona automáticamente y carga los recursos que mejor se adapten al dispositivo.

Para organizar los recursos, la app puede especificar todos los directorios de recursos adaptados que sean necesarios. Estos directorios se encuentran dentro de la carpeta /res y utilizan la nomenclatura <resources_name>-<config_qualifier> donde resources-name se refiere al nombre del tipo de recurso (drawable, layout, values, …) y config-qualifier al tipo de configuración a la que se refiere (pantalla, idioma, orientación, …).

El nombre de un directorio de recursos y el orden de los sufijos deben seguir los criterios establecidos por Android, de otra forma el proyecto no puede ser construido.

En tiempo de ejecución también pueden existir problemas derivados de la adaptación de recursos. Android debe encontrar para cada recurso al menos su definición en la carpeta por defecto, en caso contrario se produce un error. Esto significa que el sistema al buscar un recurso (R.string.app_name) siempre mirará en la carpeta de recursos más específica a la situación concreta (values-en), si dentro de los recursos de esa carpeta no localiza el recurso buscará en la carpeta por defecto (values) y en caso de no localizarlo se produce el error y la app se detiene.

Referencias

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

No hay comentarios:

Publicar un comentario