¿Cuál es la diferencia entre px, dip, dp y sp?
¿Cuál es la diferencia entre las unidades de medida px, dip, dp y sp?
De la documentación para desarrolladores de Android :
-
px
Píxeles : corresponde a los píxeles reales de la pantalla. -
en
pulgadas , según el tamaño físico de la pantalla.
1 pulgada o 2,54 centímetros -
mm
> Milímetros : según el tamaño físico de la pantalla. -
pt
> Puntos : 1/72 de pulgada según el tamaño físico de la pantalla. -
dp o dip
> Densidad : Píxeles independientes: una unidad abstracta que se basa en la densidad física de la pantalla. Estas unidades son relativas a una pantalla de 160 ppp, por lo que un dp es un píxel en una pantalla de 160 ppp. La proporción de dp a píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. Nota: El compilador acepta tanto "dip" como "dp", aunque "dp" es más consistente con "sp". -
sp
> Píxeles escalables O píxeles independientes de la escala : esto es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda utilizar esta unidad al especificar tamaños de fuente, de modo que se ajusten tanto a la densidad de la pantalla como a las preferencias del usuario. Tenga en cuenta que la documentación de Android no coincide con lo quesp
realmente significa: un documento dice "píxeles independientes de la escala" y el otro dice "píxeles escalables".
De Comprender la independencia de la densidad en Android :
Cubo de densidad | Densidad de la pantalla | Tamaño físico | Tamaño de píxel |
---|---|---|---|
ldpi | 120 ppp | 0,5 x 0,5 pulgadas | 0,5 pulgadas * 120 ppp = 60x60 píxeles |
mdpi | 160 ppp | 0,5 x 0,5 pulgadas | 0,5 pulgadas * 160 ppp = 80x80 píxeles |
hdpi | 240 ppp | 0,5 x 0,5 pulgadas | 0,5 pulgadas * 240 ppp = 120x120 píxeles |
xhdpi | 320 ppp | 0,5 x 0,5 pulgadas | 0,5 pulgadas * 320 ppp = 160x160 píxeles |
xhdpi | 480 ppp | 0,5 x 0,5 pulgadas | 0,5 pulgadas * 480 ppp = 240x240 píxeles |
xxxhdpi | 640 ppp | 0,5 x 0,5 pulgadas | 0,5 pulgadas * 640 ppp = 320x320 píxeles |
Unidad | Descripción | Unidades por pulgada física | ¿Independiente de la densidad? | ¿El mismo tamaño físico en todas las pantallas? |
---|---|---|---|---|
píxeles | Píxeles | Varía | No | No |
en | Pulgadas | 1 | Sí | Sí |
milímetros | milímetros | 25.4 | Sí | Sí |
pt | Puntos | 72 | Sí | Sí |
dp | Píxeles independientes de la densidad | ~160 | Sí | No |
sp | Escalar píxeles independientes | ~160 | Sí | No |
También se puede encontrar más información en la documentación de diseño de Google .
Prácticamente todo sobre esto y cómo lograr el mejor soporte para múltiples pantallas de diferentes tamaños y densidades está muy bien documentado aquí:
- Soportando múltiples pantallas
Tamaño de pantalla
Tamaño físico real, medido como la diagonal de la pantalla. Para simplificar, Android agrupa todos los tamaños de pantalla reales en cuatro tamaños generalizados: pequeño, normal, grande y extragrande.Densidad de pantalla
El número de píxeles dentro de un área física de la pantalla; Generalmente se denomina ppp (puntos por pulgada). Por ejemplo, una pantalla de densidad "baja" tiene menos píxeles dentro de un área física determinada, en comparación con una pantalla de densidad "normal" o "alta". Para simplificar, Android agrupa todas las densidades de pantalla reales en seis densidades generalizadas: baja, media, alta, extra alta, extra extra alta y extra extra alta.Orientación
La orientación de la pantalla desde el punto de vista del usuario. Esto es horizontal o vertical, lo que significa que la relación de aspecto de la pantalla es ancha o alta, respectivamente. Tenga en cuenta que no solo los diferentes dispositivos funcionan en diferentes orientaciones de forma predeterminada, sino que la orientación puede cambiar en tiempo de ejecución cuando el usuario gira el dispositivo.
Resolución
El número total de píxeles físicos en una pantalla. Al agregar soporte para múltiples pantallas, las aplicaciones no funcionan directamente con la resolución; las aplicaciones deben preocuparse únicamente por el tamaño y la densidad de la pantalla, según lo especificado por los grupos generalizados de tamaño y densidad.
Píxel independiente de la densidad (dp)
Una unidad de píxel virtual que debe utilizar al definir el diseño de la interfaz de usuario para expresar las dimensiones o la posición del diseño de forma independiente de la densidad. El píxel independiente de la densidad equivale a un píxel físico en una pantalla de 160 ppp, que es la densidad de referencia asumida por el sistema para una pantalla de densidad "media". En tiempo de ejecución, el sistema maneja de forma transparente cualquier escalado de las unidades dp, según sea necesario, en función de la densidad real de la pantalla en uso. La conversión de unidades dp a píxeles de pantalla es sencilla:px = dp * (dpi / 160)
. Por ejemplo, en una pantalla de 240 ppp, 1 dp equivale a 1,5 píxeles físicos. Siempre debe usar unidades dp al definir la interfaz de usuario de su aplicación, para garantizar una visualización adecuada de su interfaz de usuario en pantallas con diferentes densidades.
Si realmente quieres desarrollar una aplicación de Android para más de un tipo de dispositivo, deberías haber leído el documento de desarrollo de soporte de pantallas al menos una vez. Además de eso, siempre es bueno saber la cantidad real de dispositivos activos que tienen una configuración de pantalla particular.
- Tamaños y densidades de pantalla
Explicaré más detalladamente cómo exactamente dp convierte a px:
- Si se ejecuta en un dispositivo mdpi, la
150 x 150 px
imagen ocupará150 x 150 dp
espacio en la pantalla. - Si se ejecuta en un dispositivo hdpi, la
150 x 150 px
imagen ocupará100 x 100 dp
espacio en la pantalla. - Si se ejecuta en un dispositivo xhdpi, la
150 x 150 px
imagen ocupará75 x 75 dp
espacio en la pantalla.
Al revés: digamos que desea agregar una imagen a su aplicación y la necesita para completar un 100 x 100 dp
control. Deberá crear imágenes de diferentes tamaños para los tamaños de pantalla admitidos:
100 x 100 px
imagen para mdpi150 x 150 px
imagen para hdpi200 x 200 px
imagen para xhdpi
Además, debe tener una comprensión clara de los siguientes conceptos:
Tamaño de pantalla:
Tamaño físico real, medido como la diagonal de la pantalla. Para simplificar, Android agrupa todos los tamaños de pantalla reales en cuatro tamaños generalizados: pequeño, normal, grande y extragrande.
Densidad de pantalla:
La cantidad de píxeles dentro de un área física de la pantalla; Generalmente se denomina ppp (puntos por pulgada). Por ejemplo, una pantalla de densidad "baja" tiene menos píxeles dentro de un área física determinada, en comparación con una pantalla de densidad "normal" o "alta". Para simplificar, Android agrupa todas las densidades de pantalla reales en cuatro densidades generalizadas: baja, media, alta y extra alta.
Orientación:
La orientación de la pantalla desde el punto de vista del usuario. Esto es horizontal o vertical, lo que significa que la relación de aspecto de la pantalla es ancha o alta, respectivamente. Tenga en cuenta que no solo los diferentes dispositivos funcionan en diferentes orientaciones de forma predeterminada, sino que la orientación puede cambiar en tiempo de ejecución cuando el usuario gira el dispositivo.
Resolución:
El número total de píxeles físicos en una pantalla. Al agregar soporte para múltiples pantallas, las aplicaciones no funcionan directamente con la resolución; las aplicaciones deben preocuparse únicamente por el tamaño y la densidad de la pantalla, según lo especificado por los grupos generalizados de tamaño y densidad.
Píxel independiente de la densidad (dp):
Una unidad de píxeles virtuales que debe utilizar al definir el diseño de la interfaz de usuario para expresar las dimensiones o la posición del diseño de forma independiente de la densidad. El píxel independiente de la densidad equivale a un píxel físico en una pantalla de 160 ppp, que es la densidad de referencia asumida por el sistema para una pantalla de densidad "media". En tiempo de ejecución, el sistema maneja de forma transparente cualquier escalado de las unidades dp, según sea necesario, en función de la densidad real de la pantalla en uso. La conversión de unidades dp a píxeles de pantalla es sencilla: px = dp * (dpi/160). Por ejemplo, en una pantalla de 240 ppp, 1 dp equivale a 1,5 píxeles físicos. Siempre debe usar unidades dp al definir la interfaz de usuario de su aplicación, para garantizar una visualización adecuada de su interfaz de usuario en pantallas con diferentes densidades.
Referencia: sitio de desarrolladores de Android
dp
es dip
. Úselo para todo (margen, relleno, etc.).
Úselo sp
solo para {text-size}.
Para obtener el mismo tamaño en diferentes densidades de pantalla, Android traduce estas unidades a píxeles en tiempo de ejecución, por lo que no es necesario hacer cálculos complicados.
Vea la diferencia entre y px
en diferentes tamaños de pantalla.dp
sp
Fuente: Programación de Android: La guía de Big Nerd Ranch
Definiciones
px o punto es un píxel en la pantalla física.
Los ppp son píxeles por pulgada en la pantalla física y representan la densidad de la pantalla.
Android da alias a varias densidades
- ldpi (bajo) ~120 ppp
- mdpi (medio) ~160 ppp
- hdpi (alto) ~240 ppp
- la mayoría de los dispositivos en 2015 están aquí
- xhdpi (extra alto) ~320 ppp
- Apple iPhone 4/5/6, Nexus 4
- xxhdpi (extra-extra-alto) ~480 ppp
- Nexo 5
- xxxhdpi (extra-extra-extra-alto) ~640 ppp
dip o dp son píxeles independientes de la densidad , es decir, corresponden a más o menos píxeles dependiendo de la densidad física.
- 1dp = 1px en mdpi
sp o sip es un píxel independiente de la escala . Se escalan cuando la opción Texto grande está activada en Settings>Accessibility
- 1sp = 1pp
- 1sp = 1.2dp con accesibilidad Texto grande
¿Qué usar?
Utilice sp para el tamaño del texto.
Utilice dp para todo lo demás.