Diseñando para android: Qué es la medida dp (breve apunte).

Desde luego diseñar aplicaciones para android supone un reto muy diferente al de iPhone. Y es que al hecho que supone implementar nuestro diseño en el limitado espacio de un smartphone hay que sumar la enorme diversidad de pantallas con las que cuenta este ecosistema.

Así toda pantalla cuenta con varias características:

  • el tamaño de la pantalla definido por su diagonal normalmente medido en pulgadas. Android agrupa las pantallas en: small, normal, large, extra-large (es decir, pequeño, normal, grande y extragrande).
  • la densidad de la pantalla es la cantidad de píxeles que hay en un área  dada medido en dpi (dots per inch). Android agrupa las densidades de pantalla en: low (ldpi), medium (mdpi), high (hdpi) y extra-high (xhdpi).
  • la resolución que es el número total de píxeles en pantalla.
  • Los píxeles independientes de la densidad (dp, es decir, Density-independent Pixels), que es una unidad abstracta que se basa en la densidad física de la pantalla. Esta unidad es equivalente a un píxel en una pantalla con una densidad de 160 dpi.

La conversión de dp a pixels es muy sencilla: px = dp * dpi / 160.

Así pues, cuando nos encontramos una pantalla de mayor densidad, se aumentan el número de píxels utilizados para dibujar 1dp según los dpi’s de la pantalla. Por otro lado, si la pantalla es de menor densidad, el número de píxeles utilizados para 1dp se reducirán.

La proporción, según la clasificación hecha anteriormente, para ajustar las imágenes  a las diferentes densidades de pantalla de los dispositivos, sigue una relación de escala de 3:4:6:8 (en iPhone la proporción es más fácil, 2:1). Es decir,…

  • Para ldpi (x0.75);
  • Para mdpi (nuestra medida base);
  • Para hdpi (x1.5);
  • Para xhdpi (x2.0)

De esta forma, a la hora de diseñar para Android siempre deberemos utilizar dp cuando definamos las dimensiones, las posiciones en la UI o tamaños de textos para asegurarnos que nuestro diseño se verá correctamente en todas las pantallas. Y usaremos la proporción dada para calcular los tamaños de imágenes que debemos proporcionar a los desarrolladores.

Más información: