¿Cuál es la diferencia entre px, dip, dp y sp?

Resuelto capecrawler asked hace 54 años • 33 respuestas

¿Cuál es la diferencia entre las unidades de medida px, dip, dp y sp?

capecrawler avatar Jan 01 '70 08:01 capecrawler
Aceptado

De la documentación para desarrolladores de Android :

  1. px
    Píxeles : corresponde a los píxeles reales de la pantalla.

  2. en
    pulgadas , según el tamaño físico de la pantalla.
    1 pulgada o 2,54 centímetros

  3. mm
    > Milímetros : según el tamaño físico de la pantalla.

  4. pt
    > Puntos : 1/72 de pulgada según el tamaño físico de la pantalla.

  5. 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".

  6. 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 que sprealmente 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
milímetros milímetros 25.4
pt Puntos 72
dp Píxeles independientes de la densidad ~160 No
sp Escalar píxeles independientes ~160 No

También se puede encontrar más información en la documentación de diseño de Google .

Steven Byle avatar Jan 08 '2010 04:01 Steven Byle

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
Bruiser avatar Feb 25 '2011 12:02 Bruiser

Explicaré más detalladamente cómo exactamente dp convierte a px:

  • Si se ejecuta en un dispositivo mdpi, la 150 x 150 pximagen ocupará 150 x 150 dpespacio en la pantalla.
  • Si se ejecuta en un dispositivo hdpi, la 150 x 150 pximagen ocupará 100 x 100 dpespacio en la pantalla.
  • Si se ejecuta en un dispositivo xhdpi, la 150 x 150 pximagen ocupará 75 x 75 dpespacio 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 dpcontrol. Deberá crear imágenes de diferentes tamaños para los tamaños de pantalla admitidos:

  • 100 x 100 pximagen para mdpi
  • 150 x 150 pximagen para hdpi
  • 200 x 200 pximagen para xhdpi
devmiles.com avatar Aug 02 '2012 14:08 devmiles.com

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

Sazzad Hissain Khan avatar Jul 26 '2013 21:07 Sazzad Hissain Khan

dpes dip. Úselo para todo (margen, relleno, etc.).

Úselo spsolo 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 pxen diferentes tamaños de pantalla.dpsp

Ingrese la descripción de la imagen aquí

Fuente: Programación de Android: La guía de Big Nerd Ranch

Mina Gabriel avatar Oct 17 '2014 12:10 Mina Gabriel

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

ingrese la descripción de la imagen aquí

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.

rds avatar Jan 10 '2016 19:01 rds