🎃 Grandes descuentos en libros en línea, eformaciones y vídeos*. Código CALABAZA30. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrolle una aplicación Android
  3. Preparación del proyecto LocDVD
Extrait - Desarrolle una aplicación Android Programación en Java con Android Studio
Extractos del libro
Desarrolle una aplicación Android Programación en Java con Android Studio
2 opiniones
Volver a la página de compra del libro

Preparación del proyecto LocDVD

Gestionar la fragmentación

Si bien el desarrollador debe tener en cuenta las distintas versiones del sistema operativo que equipa a los terminales Android, también debe preocuparse de otra particularidad de la plataforma: los dispositivos que trabajan con Android están equipados con pantallas que presentan características muy variadas.

Así, si bien los smartphones con configuraciones más modestas están equipados con pantallas que miden entre 3 y 4 pulgadas (una pulgada equivale a 2,54 cm), las tabletas más avanzadas están equipadas con pantallas que miden hasta 10 pulgadas o más. Los primeros ofrecen, generalmente, una resolución de pantalla de 480 por 800 píxeles, mientras que las tabletas o smartphones de alta gama presentan una resolución que puede superar los 1080 píxeles por 1920; la versión 4.3 de Android aporta, a este respecto, el soporte de pantallas con resolución 2160 por 4096 píxeles. Los primeros smartphones Android poseían generalmente una resolución de pantalla QVGA, ¡que se corresponde con 200 por 320 píxeles!

1. Densidad de pantalla

La combinación de estos dos parámetros, tamaño y resolución de pantalla, produce una característica suplementaria, la densidad de píxeles, que se expresa en puntos por pulgada (dot per inch en inglés, o dpi).

Un terminal dotado de una pantalla grande pero con una resolución reducida tendrá una densidad de píxeles reducida, mientras que de, manera opuesta, un smartphone con una pantalla de tamaño reducido pero con una gran resolución mostrará una densidad de píxeles elevada.

Android clasifica las pantallas según su densidad en varias categorías: de ldpi (low dpi) a hdpi (high dpi), e incluso xhdpi (extra high dpi) o más. La siguiente tabla muestra los valores medios de densidad para cada categoría.

Categoría de pantalla

Densidad media (en dpi)

ldpi

120

mdpi

160

hdpi

240

xhdpi

320

xxhdpi

480

xxxhdpi

640

Estas diferencias de densidad deberían impactar en la visualización de imágenes por pantalla: si una imagen mide, por ejemplo, 120 píxeles de largo, debería mostrarse con una dimensión visible de 1 pulgada en una pantalla de clase ldpi, pero de 0,5 pulgadas en una pantalla...

Manejar varias versiones de API

El administrador de recursos, además de la caracterización por densidad de pantalla, permite también distinguir los recursos según el nivel de API del terminal.

Si bien esto se utiliza con poca frecuencia para los elementos visuales y los layouts, esta caracterización, es por el contrario, muy útil para los archivos de definición de estilo: lo veremos en el capítulo dedicado al diseño avanzado, los estilos dependen en gran medida de la versión de API del sistema.

Para caracterizar una carpeta de recursos por la versión de API es necesario, de manera similar a la densidad, agregar el número de versión de API correspondiente, prefijada por v.

Por ejemplo, un archivo de definición de estilo específico de la versión 14 de la API (Ice Cream Sandwich) se almacenará en la carpeta /values-v14/.

El valor v proporcionado será válido para todas las API iguales o superiores a este valor, siempre y cuando no haya valores definidos para API superiores. Por ejemplo, en el caso de definir las siguientes carpetas:


/res/values-v11/  
/res/values-v14/  
/res/values-v21/
 

Los valores definidos en values-v11 se utilizarán en sistemas con API 11, 12 y 13. Los valores definidos en values-v14 se utilizarán, por su parte, en sistemas con API 14 a 20, los valores values-v21 se utilizarán para todos...

Bibliotecas de soporte

El ámbito de la fragmentación del sistema Android ha obligado a Google a implementar un conjunto de bibliotecas llamadas de soporte (Support Libraries, en inglés), que permiten a las versiones más antiguas de Android aprovechar las últimas novedades de la plataforma o, al menos, simular el comportamiento de estas novedades. Estas API no se distribuyen con las actualizaciones de Android, sino que las integran los desarrolladores en sus aplicaciones, permitiendo así a los desarrolladores proporcionar un comportamiento unificado a los usuarios, ya utilicen una versión antigua o bien reciente del sistema Android.

Si bien en un principio (la primera API de soporte data de marzo de 2011) el objetivo de las bibliotecas de soporte era aportar a las versiones antiguas las mismas funcionalidades que las últimas, Google ha agregado progresivamente funcionalidades propias de las bibliotecas de soporte para ayudar al desarrollo. Google habla, en estas API, de clases de ayuda (Helpers); las primeras API estaban específicamente vinculadas a la compatibilidad ascendente (backward Compatibility).

Las dos principales bibliotecas de soporte se llaman v4 y v7-appcompat:

  • v4: esta biblioteca obtiene su nombre del hecho de que en un origen aportaba un conjunto de funcionalidades a los sistemas con Android API 4 (¡Android 1.6!). Ahora utilizable a partir de la API 9 (Gingerbread), esta biblioteca ofrece, entre...

Internacionalización

La plataforma Android es multiidioma: cada usuario puede, en pocos segundos, cambiar el idioma de su sistema sin tener que reiniciar el terminal.

De la misma manera, veremos en el capítulo dedicado a la publicación que el desarrollador define la lista de países en los que estará disponible su aplicación.

Para ayudar a construir aplicaciones completamente multilingües, Android adopta el mismo principio que para las densidades de pantalla: cada carpeta de recursos puede caracterizarse por el código de idioma al que está destinada.

Esta caracterización, unida a la noción de recursos aplicados a las cadenas de caracteres, proporciona un mecanismo muy simple para internacionalizar una aplicación, tanto desde su diseño como posteriormente.

En efecto, Google desaconseja de forma encarecida utilizar directamente cadenas de caracteres, ya sea en los archivos de layout o en el código Java. En vez de ello, estas cadenas de caracteres se definen como valores de tipo String y se almacenan generalmente en un archivo strings.xml.

Basta entonces con proveer un archivo strings.xml para el idioma por defecto y crear un archivo strings.xml para cada idioma soportado, archivo que se almacenará en la carpeta llamada value-xx correspondiente (xx representa aquí el código de idioma).

Así, si se desea proveer una versión en español de la aplicación...

Generalización

Existen muchos otros calificadores soportados por la plataforma. La siguiente tabla presenta los calificadores utilizados más a menudo; la lista completa está disponible (en inglés) en la siguiente dirección: http://developer.android.com/guide/topics/resources/providing-resources.html (consultar la tabla «table 2»).

Propiedad afectada

Ejemplo de calificador

Descripción

Idioma

en

es

en-rUS

Idioma definido por el terminal del usuario. Además del idioma, también es posible calificar el código de región, a partir de las dos letras siguientes a la letra r (de región).

Ancho

sw320dp

sw480dp

Dimensión más pequeña de la pantalla, sw significa smallest width (ancho menor). Por ejemplo, el calificador sw320dp se corresponde con los terminales que poseen un ancho mínimo de 320 dp.

Orientación de la pantalla

port

land

Orientación de la pantalla: es posible proveer recursos distintos según si la pantalla está en modo vertical (port) o apaisado (land, de landscape).

Densidad de la pantalla

ldpi

mdpi

hdpi

Densidad de la pantalla, tal y como hemos visto antes.

Versión de API

v7

v11

v14

Versión de Android ejecutada, tal y como hemos visto antes.

Es posible combinar los distintos calificadores que se pueden agregar a las carpetas de recursos; la única restricción es respetar el orden indicado en la tabla...

Noción de sabor

Incluso aunque esta noción no está concebida, propiamente hablando, para resolver la fragmentación, conviene mencionar esta característica aportada por Android Studio: los sabores (flavors, en inglés).

Android-Studio, o con más exactitud Gradle -la herramienta de construcción utilizada por Android-Studio-, permite en efecto producir distintas variantes (los flavors) de una misma aplicación, sin duplicación de código.

Los sabores se utilizan típicamente para producir, a partir de un mismo proyecto, una versión gratuita y una versión de pago de una aplicación: abordaremos con detalle esta funcionalidad en el capítulo dedicado a la publicación de una aplicación. Muy fácil de usar, potente (es posible realizar ramas condicionales en función de los sabores), esta característica también puede ser un recurso para gestionar casos complejos derivados de la fragmentación.

Preparación del proyecto LocDVD

El presente libro se basa en el desarrollo de una aplicación de gestión de DVD. Esta aplicación debe permitir a sus usuarios visualizar la lista de sus DVD, consultar la ficha detallada de un DVD y autorizar a los usuarios a introducir los DVD que poseen.

La aplicación debe, a su vez, ser capaz de buscar un DVD a partir de una base de datos de referencia accesible a través de un servicio web, y proporciona al usuario la posibilidad de personalizar la pantalla de bienvenida del terminal mostrando el último DVD incorporado en la base de datos.

Si bien el diseño de la aplicación es, en un primer momento, deliberadamente básico, los últimos capítulos tendrán como objetivo proporcionar una experiencia de usuario más agradable mejorando la presentación de las distintas pantallas de la aplicación.

Los primeros capítulos se corresponden, particularmente, con los terminales de tipo smartphone. El capítulo Los fragmentos abordará las problemáticas vinculadas a las tabletas, y permitirá implementar todos los mecanismos ofrecidos por la plataforma Android para desarrollar una aplicación compatible con smartphones y tabletas, mecanismos que se retomarán en los siguientes capítulos.

La solución se desarrolla a partir de un proyecto «vacío», creado con el asistente...