Diferentes unidades de medida disponibles en Android: dp, sp, pt, px, mm, in

septiembre 6, 2012

En el momento de desarrollar una aplicación para Android nos encontramos con el “problema” de la gran cantidad de dispositivos disponibles en el mercado, cada uno con un tamaño de pantalla diferente. Como programadores, queremos que nuestra aplicación sea compatible con todos los diferentes tamaños de pantalla.

Para solucionar este problema, en Android tenemos disponibles varias unidades de medida que nos ayudarán a que nuestra aplicación se vea correctamente sea cual sea el tamaño de la pantalla. Para ello, debemos utilizar la unidad de medida que mejor se ajuste a nuestra aplicación y requerimientos. La utilizaremos para especificar el tamaño de los elementos de nuestra aplicación.

Aquí va un listado de las diferentes unidades de medida que tenemos disponibles en Android:

dp (Density-independent Pixels)
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. Cuando se está ejecutando en 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. Utilizar las unidades dp en lugar de píxeles es la solución más simple para tratar los diferentes tamaños de pantalla de los dispositivos.

sp (Scale-independent Pixels)
Esta unidad es como la anterior, pero se escala según el tamaño de fuente configurada. Se recomienda utilizar esta unidad si se especifican tamaños de fuente, por lo que se ajusta tanto para la densidad de pantalla y como a las preferencia del usuario.

pt (Points)
Es un 1/72 de una pulgada, según el tamaño físico de la pantalla

px (Pixels)
Corresponde a un píxel real en la pantalla. Esta unidad de medida no se recomienda porque la representación real puede variar según el dispositivo en el que se ejecute, ya que cada uno de ellos puede tener un número diferente de píxeles por pulgada y pueden tener más o menos píxeles totales disponibles en la pantalla.

mm (Milímetros)
Son milímetros reales según el tamaño físico de la pantalla.

in (Pulgadas)
Son pulgadas reales según el tamaño físico de la pantalla.

CompartirTweet about this on TwitterShare on TumblrShare on FacebookShare on LinkedInShare on Google+Email this to someone

Tags ; , , , , , , , , ,

3 comentarios

    Manuel Reyes Sep 15, 2012

    Hola, buenas tardes.

    Este artículo está muy bien para aprender las diferentes unidades de medida en Android, pero y si lo que quiero es que mi aplicación se vea igual de bien en una pantalla de 3 pulgadas que en una de 5,5?? Qué tengo que hacer para que los elementos de mi aplicación se reorganicen con respecto al tamaño de pantalla si uso un Relative Layout??

    Muchas gracias por tu atención y tu tiempo.

    Un saludo.

    Responder
    Jon Sep 17, 2012

    Deberías utilizar dp (Density-independent Pixels) para fijar las posiciones de los elementos en el layout según la densidad de la pantalla y se adapten a las diferentes resoluciones.

    Responder
    Manuel Reyes Sep 17, 2012

    Si, eso es lo que hago, pero teniendo en cuenta la diferencia de puntos entre una pantalla de 3 pulgadas y una de 5, lo que coloco para que quede genial en un Sony Ericsson Experia Mini, queda fatal en un Samsung Galaxy S3.

    Se que dar soporte a todos los tipos de pantalla es imposible, pero es que si miramos una pantalla de una Tablet, que va entre 7 y 10 pulgadas, directamente mis elementos quedan empequeñecidos brutalmente, dejando mas de la mitad de la pantalla vacía, cosa que también pasa, aunque sea en menor medida, en una pantalla de 5 pulgadas.

    Puedo hacer algo para solucionar mi problema, o aunque sea, reducir las diferencias que pueda haber entre los diferentes tamaños y densidades de pantalla?

    Gracias por todo. Un saludo.

    Responder

Escribe un comentario

Los comentarios son moderados y se utiliza rel="nofollow" para los enlaces.