¿Qué son y para qué sirven los DP en Android?

¿Qué son y para qué sirven los DP en Android?
¿Qué son y para qué sirven los DP en Android?
logo tyris tech

Autor:
Juan Mauricio Piano Monzó
Desarrollador Android en Tyris-Software

Comparte esta página:

Uno de los primeros problemas que nos podemos encontrar al desarrollar aplicaciones para dispositivos Android es la enorme fragmentación de los dispositivos, teniendo una infinidad de configuraciones diferentes de hardware.

En este artículo vamos a ver el problema que supone la variedad de pantallas y qué herramientas tenemos para lidiar con él.

El pixel

Un píxel es un punto de luz capaz de tomar cualquier color y las pantallas de nuestros dispositivos móviles no son más que una cuadrícula de estos puntos de luz, el tamaño de ésta es lo que se conoce como la resolución de la pantalla

los ppi

Al existir pantallas de diferentes resoluciones y diferentes tamaños los píxeles pueden estar más juntos o más separados, ser más grandes o más pequeños, lo que afecta directamente a la calidad de imagen, por este motivo surge la necesidad de medir este aspecto y aparecen los PPI (Pixels Per Inch, puntos por pulgada en español) que mide cuántos píxeles caben en una pulgada, esta densidad de píxeles se calcula de la siguiente manera:

El problema

Usemos como ejemplo en Nexus One con 252 PPI y un Nexus 6 que tiene 493 PPI

Veamos cómo se mostraría en cada dispositivo un botón de 7 píxeles de alto.

Nexus One

Nexus One Pixels

Nexus 6

Nexus 6 Pixels

Como se puede ver en el Nexus One, al tener una densidad de píxeles de prácticamente la mitad, el botón se ve el doble de grande. Esto causaría que nuestro diseño de la interfaz se vea diferente dependiendo del dispositivo y en algunos casos extremos podría causar que sea inusable.

La solución

Para lidiar con este problema Android nos ofrece los dp o DIP (density-independent pixels).

Un dp equivale a un píxel en una pantalla con una densidad de píxeles de 160, de esta forma Android puede calcular la equivalencia en píxeles independientemente del tamaño, resolución y densidad de píxeles de cada pantalla. El cálculo se hace de forma muy sencilla con la siguiente fórmula:

Nexus One

Nexus One Circle

Nexus 6

Nexus 6 Circle

El mismo problema nos encontramos con los recursos gráficos como imágenes e iconos ya que éstos tienen un tamaño en píxeles.

La solución que nos da Android pasa por diseñar para pantallas de densidad 160 lo que se considera 1x y escalar las imágenes para los diferentes tamaños que soporta Android basándonos en la siguiente tabla:

Screen resolution

dpi

Pixel ratio

Image size (pixels)

Carpeta correspondiente

Y Android se encarga de utilizar los recursos gráficos adecuados para cada dispositivo.

Aunque este aspecto empieza a caer en desuso ya que desde ya que desde el API 21 de Android se ha simplificado mucho el uso de imágenes vectoriales dejando el escalado en diferentes archivos para casos muy concretos.

 

Android también dispone de los sp (scalable pixels) que es prácticamente lo mismo que los dp con la diferencia que se calcula si equivalencia en píxeles teniendo en cuenta la configuración del usuario referente al tamaño del texto, por lo que se recomienda su uso para definir tamaño de textos. De esta forma si un usuario con problemas visuales configura el sistema con un tamaño de texto el doble de grande de lo habitual, nuestro texto definido en sp se verá el doble de grande

Conclusión

Cuando diseñamos la interfaz de nuestra aplicación Android nunca deberíamos usar píxeles para definir tamaños ya que si lo hacemos nuestra aplicación se verá peor, pudiendo incluso reducir la usabilidad de la misma.

Para ayudarnos Android nos ofrece unas soluciones muy sencillas pero potentes que nos permite despreocuparnos de este aspecto y no ayuda a diseñas interfaces de más calidad.

logo tyris tech

Autor:
Juan Mauricio Piano Monzó
Desarrollador Android en Tyris-Software

Comparte esta página:

  • Autor de la entrada: