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


¿Cuál es la diferencia entre las unidades de medida android?

  • px
  • inmersión
  • dp
  • sp

5152
2018-01-08 03:23


origen


Respuestas:


Desde el Documentación del desarrollador de Android:

  1. px
    Píxeles - corresponde a los píxeles reales en la pantalla.

  2. en
    Pulgadas - basado en el tamaño físico de la pantalla.
      1 pulgada = 2.54 centímetros

  3. mm
    Milímetros - basado en el tamaño físico de la pantalla.

  4. pt
    Puntos - 1/72 de pulgada basado en el tamaño físico de la pantalla.

  5. dp o inmersión
    Densidad-píxeles independientes: una unidad abstracta que se basa en la densidad física de la pantalla. Estas unidades son relativas a un 160       pantalla dpi, por lo que una dp es un píxel en una pantalla de 160 ppp. La relación de       dp-to-pixel cambiará con la densidad de la pantalla, pero no necesariamente       en proporción directa. Nota: El compilador acepta tanto "inmersión" como       "dp", aunque "dp" es más consistente con "sp".

  6. sp
    Escala-píxeles independientes: esto es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Te lo recomiendo       utilice esta unidad cuando especifique los tamaños de fuente, para que se ajusten       tanto para la densidad de la pantalla como para la preferencia del usuario.

De Comprender la independencia de la densidad en Android:

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Más información también se puede encontrar en el Documentación de diseño de Google.

Para calcular las dimensiones en un dispositivo real esta aplicación puede ser utilizada.


5187
2018-02-25 12:56



Casi todo sobre esto y cómo lograr el mejor soporte para pantallas múltiples con diferentes tamaños y densidades está muy bien documentado aquí:

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 extra grande.

Densidad de pantalla
    La cantidad de píxeles dentro de un área física del   pantalla; generalmente conocido como dpi (puntos por pulgada). Por ejemplo, un   la pantalla de "baja densidad" tiene menos píxeles dentro de un área física determinada,   en comparación con una pantalla de densidad "normal" o "alta". Por simplicidad,   Android agrupa todas las densidades de pantalla reales en seis generalizadas   densidades: baja, media, alta, extra alta, extra extra alta y   extra-extra-extra-alto.

Orientación
La orientación de la pantalla desde el punto de vista del usuario   ver. Esto es paisaje o retrato, lo que significa que la pantalla   la relación de aspecto es ancha o alta, respectivamente. Tenga en cuenta que no   solo diferentes dispositivos operan en diferentes orientaciones   predeterminado, pero la orientación puede cambiar en tiempo de ejecución cuando el usuario   gira el dispositivo.

Resolución
 La cantidad total de píxeles físicos en   una pantalla. Al agregar soporte para pantallas múltiples, las aplicaciones lo hacen   no trabaja directamente con la resolución; las aplicaciones deben estar preocupadas   solo con el tamaño y la densidad de la pantalla, según lo especificado por el generalizado   grupos de tamaño y densidad.

Píxel independiente de la densidad (dp)
 Un virtual   unidad de píxeles que debe usar al definir el diseño de la interfaz de usuario, para expresar   dimensiones o posición del diseño de una manera independiente de la densidad.   El píxel independiente de la densidad es equivalente a un píxel físico en un 160   pantalla dpi, que es la densidad base asumida por el sistema para un   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   sencillo:    px = dp * (dpi / 160).   Por ejemplo, en una pantalla de 240 ppp, 1 dp   es igual a 1.5 píxeles físicos. Siempre debe usar unidades dp cuando   definir la interfaz de usuario de su aplicación para garantizar una visualización adecuada de su UI en   pantallas con diferentes densidades.

Si es serio sobre el desarrollo de una aplicación de Android para más de un tipo de dispositivo, debería haber leído las pantallas que admiten el documento de desarrollo 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 en particular.


606
2017-08-02 14:15



Elaboraré más sobre cómo exactamente convierte dp a px:

  • Si se ejecuta en un dispositivo mdpi, 150 x 150 px la imagen tomará 150 * 150 dp de espacio de pantalla
  • Si se ejecuta en un dispositivo hdpi, 150 x 150 px la imagen tomará 100 * 100 dp de espacio de pantalla
  • Si se ejecuta en un dispositivo xhdpi, 150x150 px la imagen tomará 75 * 75 dp de espacio de pantalla

A la inversa: digamos, desea agregar una imagen a su aplicación y la necesita para llenar un 100 * 100 dp controlar. Tendrá que crear imágenes de diferentes tamaños para los tamaños de pantalla compatibles:

  • 100 * 100 px imagen para mdpi
  • 150 * 150 px imagen para hdpi
  • 200 * 200 px imagen para xhdpi

280
2017-10-30 09:43



px Píxeles - punto por escala corresponde a píxeles reales en la pantalla.

en Pulgadas - basado en el tamaño físico de la pantalla.

mm Milímetros - basado en el tamaño físico de la pantalla.

pt Puntos - 1/72 de pulgada basado en el tamaño físico de la pantalla.

dp Densidad - Pixels 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 dp es un píxel en una pantalla de 160 ppp. La relación de dp-a-píxel cambiará con la densidad de la pantalla,  pero no necesariamente en proporción directa.  Nota: el compilador acepta ambos dip y dp, aunque dp es más consistente con sp.

sp -Pieles independientes de escalas - Esto es como el dp unidad,  pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda utilizar esta unidad al especificar el tamaño de fuente,  por lo tanto, se ajustarán tanto para la densidad de la pantalla como para las preferencias del usuario.

Tomemos el ejemplo de dos pantallas que son del mismo tamaño, pero una tiene una densidad de pantalla de 160 ppp (puntos por pulgada, es decir, píxeles por pulgada) y la otra es de 240 ppp.

                          Lower resolution   screen          Higher resolution, same size
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent Pixels          240                               240
(“dip” or “dp” or “dps”)

Scale-independent pixels 
 (“sip” or “sp”)                  Depends on user font size settings    same

232
2017-07-26 21:19



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 extra grande.

Densidad de pantalla: 

La cantidad de píxeles dentro de un área física de la pantalla; generalmente conocido como dpi (puntos por pulgada). Por ejemplo, un   la pantalla de "baja densidad" tiene menos píxeles dentro de un área física determinada,   en comparación con una pantalla de densidad "normal" o "alta". Por simplicidad,   Android agrupa todas las densidades de pantalla reales en cuatro generalizadas   densidades: baja, media, alta y extra alta.

Orientación: 

La orientación de la pantalla desde el punto de vista del usuario. Esto es paisaje o retrato, lo que significa que   la relación de aspecto de la pantalla es ancha o alta, respectivamente. Ten cuidado   que no solo diferentes dispositivos operan en diferentes orientaciones   por defecto, pero la orientación puede cambiar en tiempo de ejecución cuando el usuario   gira el dispositivo.

Resolución:

La cantidad total de píxeles físicos en una pantalla. Al agregar soporte para pantallas múltiples, las aplicaciones no funcionan directamente   con resolución; las aplicaciones deben preocuparse solo por la pantalla   tamaño y densidad, según lo especificado por el tamaño y la densidad generalizados   grupos.

Píxel independiente de la densidad (dp): 

Una unidad de píxel virtual que debe usar al definir el diseño de la interfaz de usuario, para expresar las dimensiones de diseño o   posición de una manera independiente de la densidad. El pixel independiente de densidad   es equivalente a un píxel físico en una pantalla de 160 ppp, que es el   densidad base asumida por el sistema para una pantalla de densidad "media".   En tiempo de ejecución, el sistema maneja de forma transparente cualquier escala del dp   unidades, 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 simple: px = dp * (dpi   / 160). Por ejemplo, en una pantalla de 240 ppp, 1 dp equivale a 1.5 físico   pixeles Siempre debe usar unidades dp cuando defina su   UI de la aplicación, para garantizar una visualización adecuada de su UI en pantallas con   diferentes densidades.

Referencia: Sitio de desarrolladores de Android


183
2017-10-17 12:47



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

Utilizar sp solo para {text-size}.


Para obtener el mismo tamaño en diferentes densidades de pantalla, Android traduce estas unidades en píxeles en tiempo de ejecución, por lo que no hay matemática complicada para que hagas.


Vea la diferencia entre px, dp y sp en diferentes tamaños de pantalla.

Enter image description here

Fuente: Programación de Android: The Big Nerd Ranch Guide


168
2018-01-10 19:13



He calculado la fórmula a continuación para hacer las conversiones dpi a dp y sp enter image description here


118
2017-12-27 09:21



Definiciones

px o punto es un píxel en la pantalla física.

dpi son píxeles por pulgada en la pantalla física y representan la densidad de la pantalla.

Android da nombres de alias a varias densidades

  • ldpi (bajo) ~ 120dpi
  • mdpi (medio) ~ 160 dpi
  • hdpi (alto) ~ 240dpi
    • la mayoría de los dispositivos en 2015 están aquí
  • xhdpi (extra-alto) ~ 320 dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-alto) ~ 480dpi
    • Nexus 5
  • xxxhdpi (extra extra extra extra) ~ 640 ppp

inmersión o dp son píxeles de densidad independiente, es decir, corresponden a más o menos píxeles dependiendo de la densidad física.

  • 1dp = 1px en mdpi

enter image description here

sp o sorbo es un pixel independiente de la escala. Se escalan cuando el Texto grande la opción está activada en Configuraciones > Accesibilidad

  • 1sp = 1dp
  • 1sp = 1.2dp con accesibilidad Texto grande

Qué usar?

Utilizar sp para el tamaño del texto

Utilizar dp para todo lo demás.


106
2017-09-20 21:34



Fuente 1

Fuente 2

Fuente 3: (los datos de la fuente 3 se dan a continuación)

Estos son valores de dimensión definidos en XML. Se especifica una dimensión   con un número seguido de una unidad de medida. Por ejemplo: 10px, 2in,   5sp. Las siguientes unidades de medida son compatibles con Android:

dp

Píxeles independientes de la densidad: una unidad abstracta que se basa en   densidad física de la pantalla. Estas unidades son relativas a 160 ppp   (puntos por pulgada) pantalla, en el cual 1dp es aproximadamente igual a 1px. Cuando   corriendo en una pantalla de mayor densidad, la cantidad de píxeles utilizados para dibujar   1dp se amplía por un factor apropiado para los ppp de la pantalla.   Del mismo modo, cuando en una pantalla de menor densidad, el número de píxeles utilizados   para 1dp es reducido. La relación de dp-a-píxel cambiará con el   densidad de pantalla, pero no necesariamente en proporción directa. Usando dp   unidades (en lugar de unidades de px) es una solución simple para hacer que la vista   dimensiones en su diseño cambiar el tamaño correctamente para pantalla diferente   densidades En otras palabras, proporciona consistencia para el mundo real   tamaños de sus elementos de interfaz de usuario en diferentes dispositivos.

sp

Píxeles independientes de escala: esto es como la unidad dp, pero también es   escalado según la preferencia de tamaño de fuente del usuario. Se recomienda que uses   esta unidad cuando se especifican los tamaños de fuente, por lo que se ajustarán para   tanto la densidad de la pantalla como la preferencia del usuario.

pt

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

px

Píxeles: corresponde a los píxeles reales en la pantalla. Esta unidad de   medida no es recomendable porque la representación real puede variar   a través de dispositivos; cada dispositivo puede tener un número diferente de píxeles por   pulgadas y puede tener más o menos píxeles totales disponibles en la pantalla.

mm

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

en

Pulgadas: según el tamaño físico de la pantalla.

Nota: Una dimensión es un recurso simple al que se hace referencia utilizando el valor proporcionado en el atributo de nombre (no el nombre del archivo XML). Como tal, puede combinar recursos de dimensión con otros recursos simples en el único archivo XML, bajo un elemento.


104
2018-04-02 06:35



Básicamente, el único momento en que se aplica px es un px, y eso es si quieres exactamente un píxel en la pantalla como en el caso de un divisor:

En> 160 ppp, puede obtener 2-3 píxeles,

En> 120 ppp, se redondea a 0.


96
2017-07-09 05:46



px

Píxeles: corresponde a los píxeles reales en la pantalla.

dp o sumergir

Píxeles independientes de la densidad: 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 una dp es un píxel en una pantalla de 160 ppp.

Uso de dp:

Independencia de la densidad - Su aplicación logra "independencia de densidad" cuando conserva el tamaño físico (desde el punto de vista del usuario) de los elementos de la interfaz de usuario cuando se muestran en pantallas con diferentes densidades. (es decir) La imagen debe tener el mismo tamaño (no ampliarse ni contraerse) en diferentes tipos de pantallas.

sp

Píxeles independientes de escala: esto es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario.

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension


81
2018-02-13 18:50