Читать книгу El gran libro de Android - Jesus Tomás Gironés - Страница 69
2.6. Recursos alternativos
ОглавлениеUna aplicación Android va a poder ser ejecutada en una gran variedad de dispositivos. El tamaño de pantalla, la resolución o el tipo de entradas puede variar mucho de un dispositivo a otro. Por otra parte, nuestra aplicación ha de estar preparada para diferentes modos de funcionamiento, como el modo “automóvil” o el modo “noche”, y para poder ejecutarse en diferentes idiomas.
A la hora de crear la interfaz de usuario, hemos de tener en cuenta todas estas circunstancias. Afortunadamente, la plataforma Android nos proporciona una herramienta de gran potencia para resolver este problema: el uso de los recursos alternativos.
Práctica: Recursos alternativos en Asteroides |
1.Ejecuta en el emulador la aplicación creada en el punto anterior.
2.Los teléfonos móviles basados en Android permiten cambiar la configuración en apaisado y en vertical. Para conseguir este efecto con el emulador, pulsa Ctrl-F11. Si usas un dispositivo de pantalla pequeña, observas como el resultado de la vista que acabas de diseñar en vertical no queda todo lo bien que desearíamos.
Para resolver este problema, Android te permite diseñar una vista diferente para la configuración horizontal y otra para la vertical.
3.Crea la carpeta res/layout-land.
4.Copia en ella el fichero activity_main.xml. Para ello selecciona el fichero y pulsa Ctrl-C. Selecciona la carpeta destino y pulsa Ctrl-V.
5.Crea una vista similar a la que ves a continuación: formada por un LinearLayout que contiene un TextView y un TableLayout con dos Button por columna.
6.Ejecuta de nuevo la aplicación y observa como la vista se ve correctamente en las dos orientaciones.
Solución: |
Has de obtener un código XML similar al siguiente:
NOTA: para conseguir que en un TableLayout las columnas se ajusten a todo el ancho de la tabla, poner stretchColumns="*". stretchColumns="0" significa que se asigne la anchura sobrante a la primera columna. stretchColumns="1" significa que se asigne la anchura sobrante a la segunda columna. stretchColumns="*" significa que se asigne la anchura sobrante entre todas las columnas.
Android utiliza una lista de sufijos para expresar recursos alternativos. Estos sufijos pueden hacer referencia a la orientación del dispositivo, el lenguaje, la región, la densidad de píxeles, la resolución, el método de entrada, etc.
Por ejemplo, si queremos traducir nuestra aplicación al inglés, español y francés, siendo el primer idioma el usado por defecto, crearíamos tres versiones del fichero strings.xml y lo guardaríamos en los tres directorios siguientes:
res/values/strings.xml
res/values-es/strings.xml
res/values-fr/strings.xml
Ejercicio: Traducción de Asteroides |
1.Crea la carpeta res/values-en.
2.Copia en ella el fichero strings.xml.
3.En este fichero traduce al inglés todas las cadenas.
4.Ejecuta la aplicación
5.Vamos a cambiar la configuración de idioma en un dispositivo Android. Para ello accede a Ajustes del dispositivo (Settings) y selecciona la opción Mi dispositivo > Idioma e introducción. Dentro de esta opción selecciona como idioma Español. NOTA: observa que en otros idiomas permite seleccionar tanto el idioma como la región. Por desgracia, para el español solo permite dos regiones: España y Estados Unidos.
6.Observa cómo, ahora, se ha traducido el texto.
Otro ejemplo de utilización de recursos diferenciados lo podemos ver con el icono que se utiliza para lanzar la aplicación. Observa cómo, al crear una aplicación, este icono se crea en cinco carpetas drawable diferentes, para utilizar un icono distinto según la densidad de píxeles del dispositivo:
res/drawable-ldpi/ic_launcher.png
res/drawable-mdpi/ic_launcher.png
res/drawable-hdpi/ic_launcher.png
res/drawable-xhdpi/ic_launcher.png
res/drawable-xxhdpi/ic_launcher.png
NOTA: En el siguiente capítulo se describe por qué se actúa de esta manera.
Resulta posible indicar varios sufijos concatenados; por ejemplo:
res/values-en-rUS/strings.xml
res/values-en-rUK/strings.xml
Pero cuidado, Android establece un orden a la hora de encadenar sufijos. Puedes encontrar una lista de estos sufijos en el apéndice C y en este enlace:
http://developer.android.com/guide/topics/resources/providing-resources.html
Para ver los sufijos disponibles, también puedes pulsar con el botón derecho sobre una carpeta de recursos y seleccionar New > Other… > Android > Android XML File. Esta opción te permite crear un nuevo fichero XML y poner el sufijo deseado de forma y orden correctos.
Vídeo[tutorial]: Uso de recursos alternativos en Android |
Práctica: Creando un layout para tabletas en Asteroides |
Si ejecutas la aplicación Asteroides en una tableta, observarás que el tamaño de los botones es demasiado grande.
1.Trata de hacer un layout alternativo a main.xml, que sea utilizado en pantallas de tamaño xlarge (7-10,5 pulgadas).
2.Si lo deseas, también puedes personalizar el fondo de la pantalla (atributo background), los tipos de letras, los colores, etc.
3.Verifica que la aplicación se visualiza correctamente en todos los tipos de pantalla, tanto en horizontal como en vertical.
Preguntas de repaso: Recursos alternativos |