Desarrollando Android apps para distintas pantallas

De Dos Ideas.
Saltar a: navegación, buscar

Términos y conceptos principales

  • Tamaño de la pantalla: El tamaño físico real de la pantalla medido diagonalmente.
  • Densidad de la pantalla: Cantidad de píxels en una pulgada cuadrada de la pantalla. Dots per inch (dip).
  • Orientación: Vertical/Horizontal (land/port)
  • Resolución: La cantidad total de píxels que tiene la pantalla.
  • Píxel independiente de la densidad (dp):
  • Nomenclaturas: De las siguientes generalizaciones, se toma el tamaño normal, y la densidad medium como la estándar.

Unidades disponibles

Dependientes del tamaño de la pantalla

  • Pulgadas (in)
  • Puntos (pt): Un punto vale 1/72 de una pulgada.
  • Milímetros (mm)

Independientes del tamaño de la pantalla

  • Pixels (px): No se recomienda utilizar píxels porque la cantidad de píxels por pulgada varía entre distintos dispositivos.
  • Density-independent pixels (dp): Es una unidad de medida virtual, que está basada en la densidad de la pantalla. Es relativa a una pantalla de tamaño normal y densidad mdpi como ya vimos más arriba que es el estándar. Al usar esta medida estamos permitiendo que el Sistema Operativo se encargue de redimensionar los elementos de la GUI de acuerdo a cada dispositivo, por lo tanto es aconsejable utilizar siempre esta unidad de medida.
  • Scale-independent pixels (sp): Son como los dp, pero además están vinculados (escalados) al tamaño de la fuente que el usuario tiene asignada en el resto del dispositivo. Se debe usar esta unidad de medida siempre que se esté definiendo el tamaño de algún texto que se muestre en la GUI.

Entendiendo cómo funciona

El Sistema Operativo se encarga de agrupar los distintos tamaños de pantallas, para ello, cada una de las agrupaciones, tanto de tamaño como densidad abarca un rango finito de medidas. De esta manera, a una pantalla de 2 pulgadas, le corresponde el tamaño “small” y si la densidad es 180 le corresponderá “mdpi”.

Alternativas para soportar múltiples pantallas

  • Explícitamente declarando en el Manifest.xml

En el archivo de manifiesto se puede especificar explícitamente para qué tamaños de pantallas se podrá instalar la aplicación. Es decír, aquellos dispositivos que no cumplan con esa especificación directamente no podrán instalar la aplicación.

  • Distintos layouts para distintas pantallas

Si bien el sistema operativo redimensiona los layouts de acuerdo al tipo de pantalla de cada dispositivo, y esto en la mayoría de los casos hace que la aplicación se vea bien, una solución es crear el mismo layout para cada tipo de pantalla.

  • Utilizar unidades de medidas escalables por el Sistema Operativo

Esto es tán simple como empezar a hacer las cosas bien desde un primer instante, y nuestra aplicación quedará lista para ser compatible con cualquier pantalla. Se trata de utilizar las siguientes unidades para determinadas situaciones:

Para indicar cualquier tamaño de widgets, o distancia entre ellos, hay que utilizar la unidad “dp” (y no “px” como naturalmente haríamos). Cuando se indique el tamaño de las fuentes, hay que usar “sp” debido a que esta unidad está vinculada con el tamaño de fuente especificado por el usuario a todo el SO, entonces se adaptaría a las preferencias del usuario.

  • Proveer distintos recursos para cada tipo de pantalla.

El Sistema Operativo escalará todos los recursos (como las imágenes) de acuerdo al tipo de pantalla de cada dispositivo para que se vean correctamente. Sin embargo, es conveniente proveer un recurso con el tamaño adecuado para tipo de pantalla.

¿Cómo testear la compatibilidad?

Para probar que la aplicación se ve correctamente en distintos dispositivos con distintas características de pantallas, se debe crear un emulador distinto para cada tipo de pantalla que se quiera probar, y luego verificar visualmente todas las actividades de la aplicación.

Fuente

Ver también