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

5815

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

  • px
  • inmersión
  • dp
  • sp
Capecrawler
fuente
65
esta es la diferencia completa entre px, dip, dp y sp en android [ developer.android.com/guide/topics/resources/…
NagarjunaReddy
20
Este ingenioso conversor lo demuestra mejor , en mi opinión. También es extremadamente útil para exportar sprites desde Photoshop o diseñar su diseño para una dimensión física.
Paul Lammertsma
99
nueva descripción en Unidades y medidas de
Arnav M.
1
Diseño de material con densidad de píxeles material.io/design/layout/…
Shomu

Respuestas:

5773

De la documentación para desarrolladores de Android :

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

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

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


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

  5. dp o dip
    Density -dependiente de píxeles: 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 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 "dip" y "dp", aunque "dp" es más consistente con "sp".

  6. Píxeles independientes de la
    escala sp : es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda que use esta unidad al especificar los tamaños de fuente, de modo que se ajusten tanto a la densidad de la pantalla como a las preferencias del usuario.

De la comprensión de 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      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

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

Steven Byle
fuente
17
a pesar de que deberían ser lo mismo, tiendo a tener muchos problemas con dp mientras todo funciona bien con dip
DallaRosa
247
Una nota sobre db / sp que no es totalmente obvia: la escala que se produce para estos no depende de la densidad real (ppp) de los dispositivos, sino de en qué "cubeta" de densidades cae: las cubetas disponibles son: 120,160,240,320. Esto puede causar algunos problemas al manejar pantallas que son significativamente diferentes pero que se agrupan de la misma manera.
Fraggle
15
Tenga en cuenta que la documentación ya no menciona "dip" en absoluto, solo "dp", aunque el compilador todavía parece aceptar "dip".
Adam Rosenfield
15
@android_developer (5 comentarios anteriores) dphace no tienen exactamente la misma longitud física. (Aunque está cerca). Vea el comentario de @ Fraggle acerca de la inversión. Lo que esto significa es que 48dp tendrá aproximadamente 8 mm (0.3 pulgadas), pero puede variar hasta 11 mm.
intrepidis
11
La razón de la inversión es para que los desarrolladores puedan probar sus aplicaciones en algunos dispositivos de diferentes densidades y tener la confianza de que los diseños se verán iguales en una multitud de dispositivos. Entonces, incluso si el tamaño físico de los botones, etc., cambia un poco, el aspecto general de una actividad será el mismo.
intrepidis
685

Casi todo lo relacionado con esto y cómo lograr el mejor soporte para múltiples pantallas de 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
El número de píxeles dentro de un área física de la pantalla; generalmente se conoce como dpi (puntos por pulgada). Por ejemplo, una pantalla de densidad "baja" tiene menos píxeles dentro de un área física dada, 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-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 resolución; las aplicaciones solo deben ocuparse del tamaño y la densidad de la pantalla, según lo especificado por los grupos de tamaño y densidad generalizados

Píxel independiente de la densidad (dp)
Una unidad virtual de píxeles que debe usar al definir el diseño de la interfaz de usuario, para expresar las dimensiones o la 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 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 escala de las unidades dp, según sea necesario, en función de la densidad real de la pantalla en uso. La conversión de las unidades de DP a píxeles de la pantalla es simple: 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 la visualización adecuada de su interfaz de usuario en pantallas con diferentes densidades.

Si realmente quiere desarrollar una aplicación de Android para más de un tipo de dispositivo, debería 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.

Matón
fuente
41
Entonces, si usa dp para un botón y sp para el tamaño de fuente del texto del botón, ¿qué sucede cuando el usuario comienza a escalar? El texto se ampliará, pero ¿el botón acomodará esto al ampliar también?
Wytze
11
@Wytze, no. Para las cosas donde ajustar el texto puede ser un problema, solo usaría dip para que las cosas no se desborden.
eski
12
@Wytze Y yo, por el contrario, uso sp tanto para el texto como para lo que contenga. Por ejemplo, si tengo un botón con un tamaño fijo y un texto dentro, asignaría el tamaño del botón en sp para que también se amplíe cuando sea necesario. De lo contrario, el usuario se molestará porque haya aumentado el tamaño del texto y no haya aumentado. Por supuesto, el diseño debe ser lo suficientemente flexible como para permitirlo.
Malcolm
2
Si sus diseñadores no dejan espacio para que los elementos basados ​​en texto se escalen de acuerdo con el tamaño de sp, una opción es cambiar a cualquier diseño que use para un dispositivo más estrecho, luego escalar todo uniformemente mediante (DisplayMetrics.scaledDensity / DisplayMetrics. densidad).
John Mellor
La falta de espacio libre en @Sam también causará problemas durante la i18n
reduciendo la actividad el
347

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

  • Si se ejecuta en un dispositivo mdpi, una 150 x 150 pximagen ocupará 150 * 150 dpespacio en la pantalla.
  • Si se ejecuta en un dispositivo hdpi, una 150 x 150 pximagen ocupará 100 * 100 dpespacio en la pantalla.
  • Si se ejecuta en un dispositivo xhdpi, una 150x150 pximagen ocupará 75 * 75 dpespacio en la pantalla.

Al revés: por ejemplo, desea agregar una imagen a su aplicación y la necesita para llenar un 100 * 100 dpcontrol. Deberá crear imágenes de diferentes tamaños para los tamaños de pantalla admitidos:

  • 100 * 100 px imagen para mdpi
  • 150 * 150 px imagen para hdpi
  • 200 * 200 px imagen para xhdpi
devmiles.com
fuente
2
¿Cómo calculamos los píxeles para hdpi, ldpi, mdpi, etc.? Escuché que usamos esta fórmula ... px = dp * (dpi / 160); me puedes explicar con esta formula por favor?
Rakesh patanga
@Rakeshpatanga A una densidad de 160 ppp, 1 px = 1 dp (el píxel físico y la abstracción dp son iguales). Es decir, para un solo dp tenemos (1) * (160/160) = 1, o exactamente 1 px. En la densidad más alta de 320 ppp, un solo dp es (1) * (320/160) = 2 píxeles, y dos dp son (2) * (320/160) = 4 px.
samis
Alinéelas en el monoespacio para ver: | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (poner saltos de línea después de las comas). | _ | = 1 p i x el.
samis
re "Deberá crear imágenes de diferentes tamaños para los tamaños de pantalla admitidos:" Eso depende. Para imágenes pequeñas de alto contraste , por ejemplo, iconos, es aconsejable crear al menos el tamaño más pequeño (para asegurarse de que sea claro) más un tamaño bastante grande (para que las versiones grandes no se vean borrosas). Pero incluso para los iconos, puede permitir que una imagen se escale en un rango de tamaños, a densidades más altas. Para fotografías, solo especifique el área de visualización que desea que se llene y confíe en la escala del dispositivo.
ToolmakerSteve
286

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

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

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: 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 uno dpes 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 dipy dp, aunque dpes más coherente con sp.

sp - Píxeles independientes de la escala : es como la dpunidad, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda que utilice esta unidad cuando especifique tamaños de fuente, de modo que se ajusten tanto a la densidad de la pantalla como a las preferencias del usuario.

Tome 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
Amit Gajera
fuente
234

Además, debe tener una comprensión clara sobre 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 se conoce como dpi (puntos por pulgada). Por ejemplo, una pantalla de densidad "baja" tiene menos píxeles dentro de un área física dada, 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 los diferentes dispositivos no solo funcionan en diferentes orientaciones de manera 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 resolución; las aplicaciones solo deben ocuparse del tamaño y la densidad de la pantalla, según lo especificado por los grupos de tamaño y densidad generalizados.

Píxel independiente de la densidad (dp):

Una unidad virtual de píxeles que debe usar al definir el diseño de la interfaz de usuario, para expresar las dimensiones o la 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 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 manera transparente cualquier escala 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 simple: 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 la visualización adecuada de su interfaz de usuario en pantallas con diferentes densidades.

Referencia: sitio de desarrolladores de Android

Sazzad Hissain Khan
fuente
¿Significa esto que todo lo que diseñe con las unidades dp siempre ocupará el mismo% de la pantalla, independientemente de la densidad de píxeles del dispositivo? Asumiendo relaciones de aspecto idénticas.
DBIT
199

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

Úselo solo sppara {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 hay que hacer cálculos matemáticos complicados.


Ver la diferencia entre px, dpy spen diferentes tamaños de pantalla.

Ingrese la descripción de la imagen aquí

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

Mina Gabriel
fuente
144

He calculado la fórmula a continuación para hacer las conversiones dpia dpysp ingrese la descripción de la imagen aquí

chaitanya
fuente
10
Debería ser ppi en lugar de dpi
Prateek
142

Definiciones

px o dot 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) ~ 160dpi
  • 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) ~ 480dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-high) ~ 640 ppp

dip o dp son píxeles independientes de 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 = 1dp
  • 1sp = 1.2dp con accesibilidad Texto grande

¿Qué usar?

Use sp para el tamaño del texto.

Usa dp para todo lo demás.

rds
fuente
129

Fuente 1

Fuente 2

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

Estos son valores de dimensión definidos en XML. Una dimensión se especifica 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 la densidad física de la pantalla. Estas unidades son relativas a una pantalla de 160 ppp (puntos por pulgada), en la que 1dp es aproximadamente igual a 1px. Cuando se ejecuta en una pantalla de mayor densidad, el número de píxeles utilizados para dibujar 1dp se amplía en un factor apropiado para el dpi de la pantalla. Del mismo modo, cuando se encuentra en una pantalla de menor densidad, la cantidad de píxeles utilizados para 1dp se reduce. La relación de dp a píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. Usar unidades dp (en lugar de unidades px) es una solución simple para hacer que las dimensiones de la vista en su diseño cambien de tamaño correctamente para diferentes densidades de pantalla. En otras palabras, proporciona consistencia para los tamaños del mundo real de los elementos de la interfaz de usuario en diferentes dispositivos.

sp

Píxeles independientes de la escala: es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda que utilice esta unidad cuando especifique tamaños de fuente, para que se ajusten tanto a la densidad de la pantalla como a las preferencias 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 se recomienda porque la representación real puede variar entre dispositivos; Cada dispositivo puede tener un número diferente de píxeles por pulgada 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 un archivo XML, bajo un elemento.

sms247
fuente
99
Además: ¿cuál es el valor agregado de esta respuesta? Parece que no hay nada que no haya sido mencionado en otras respuestas.
laalto
119

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.

Joe Plante
fuente
getDimensionPixelOffset se redondea hacia abajo, getDimensionPixelSize se redondea hacia arriba.
Eugen Pechanec
102

px

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

dp o dip

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 un dp es un píxel en una pantalla de 160 ppp.

Uso de dp:

Independencia de la densidad : su aplicación logra la "independencia de la 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 muestra en pantallas con diferentes densidades. (es decir) La imagen debe verse del mismo tamaño (no ampliada o contraída) en diferentes tipos de pantallas.

sp

Píxeles independientes de la escala: 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

Nirav Ranpara
fuente
98

¿Dónde usar qué y relación entre px y dp?

Píxel independiente de la densidad (dp)

Una unidad virtual de píxeles que debe usar al definir el diseño de la interfaz de usuario, para expresar las dimensiones o la posición del diseño de una manera independiente de la densidad. Como se describió anteriormente, el píxel independiente de la densidad es equivalente 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 manera transparente cualquier escala 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 simple:

px = dp * (ppp / 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 la visualización adecuada de su interfaz de usuario en pantallas con diferentes densidades.

Comprender píxel a dp y viceversa es muy esencial (especialmente para dar valores dp exactos al equipo creativo)

dp = px * 160 / dpi

MDPI = 160 dpi || Therefore, on MDPI 1 px = 1 dp
For example, if you want to convert 20 pixel to dp, use the above formula,
dp = 20 * 160 / 160 = 20.
So, 20 pixel = 20 dp.

HDPI = 240 dpi - So, on HDPI 1.5 px = 1 dp
XHDPI = 320 dpi - So, on XHDPI 2 px = 1 dp
XXHDPI = 480 dpi - So, on XXHDPI 3 px = 1 dp

For example, let us consider Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 screen, developers can
convert it to dp easily by the following calculation :
dp = 24 * 160 / 320 = 12 dp
Screen dimension:
768 x 1280 pixel resolution (320 ppi or 320dpi)
Optional (screen size):
 4.7" diagonal
  • Intente obtener todos los valores de píxeles en números pares del equipo creativo. De lo contrario, se perderá precisión al multiplicar por 0.5.

px

Se explica arriba. Intenta evitar en los archivos de diseño. Pero hay algunos casos en los que se requiere px. por ejemplo, la línea divisoria ListView. px es mejor aquí para dar una línea de un píxel como divisor para todas las resoluciones de pantalla.

sp

Use sp para tamaños de fuente. Entonces, solo la fuente dentro de la aplicación cambiará mientras cambie el tamaño de las fuentes del dispositivo (es decir, Pantalla -> Fuentes en el dispositivo). Si desea mantener una fuente de tamaño estático dentro de la aplicación, puede dar la dimensión de la fuente en dp. En tal caso, nunca cambiará. Los desarrolladores pueden obtener dicho requisito para algunas pantallas específicas, para eso, los desarrolladores pueden usar dp en lugar de sp. En todos los demás casos, se recomienda sp.

Arunjyothis
fuente
90

Puede ver la diferencia entre pxy dpde la imagen a continuación, y también puede encontrar que pxy dpno puede garantizar los mismos tamaños físicos en las diferentes pantallas.

ingrese la descripción de la imagen aquí

Céfiro
fuente
3
@EnesBattal, creo que porque el dp no es un tamaño físico agudo, es un valor aproximado. Citando de CapTech: "dp - Esta es una unidad independiente de la densidad, sin embargo, el tamaño físico de un solo" dp "es aproximadamente el mismo en cada densidad de pantalla. Hay aproximadamente 160" dp "en una pulgada. Un factor de escala, dependiendo en el depósito de densidad del dispositivo, se aplica para convertir "dp" a la cantidad de píxeles a 160 ppp. El número de píxeles a los que se traduce un "dp" varía según el píxel en la densidad de la pantalla y el depósito de densidad al que cae el dispositivo dentro."
Zephyr
3
@RuchirBaronia, creo que el DP o DIP todavía está allí dentro de la apk, porque la apk aún no sabe con qué tipo de densidad de pantalla se ejecutará, por lo que la independencia del dispositivo aún debe mantenerse.
Zephyr
79

Cualquier cosa relacionada con el tamaño del texto y la apariencia debe usar spo pt. Mientras que, cualquier cosa relacionada con el tamaño de los controles, los diseños, etc. debe usarse con dp.

Puedes usar ambos dpy dipen sus lugares.

Atish Agrawal
fuente
69

Solo usaría dp.

Se habla mucho sobre el uso de "sp" para los tamaños de fuente, y aunque aprecio el punto, no creo que sea lo correcto desde el punto de vista del diseño. Puede terminar rompiendo su diseño si el usuario tiene una selección de tamaño de fuente inestable, y el usuario terminará culpando a la aplicación , y no a sus propias opciones de vida.

Además, si toma una aplicación de fuente sp en una tableta de 160 ppp, encontrará que todo se escala ... pero su fuente, que en comparación se verá pequeña. No es un buen look.

Si bien la idea de las fuentes "sp" tiene buen corazón, es una mala idea. Quédate con dp para todo.

bharal
fuente
1
Sabes que el factor de escala de fuente aplicado spes un factor, ¿verdad? Cualquier cosa que afecte dptambién afectará sp. Dicho esto, todavía es preferible especificar el tamaño de fuente usando en dplugar de spsi su diseño es muy ajustado y los tamaños más grandes no se ajustan; es mejor tener un texto más pequeño de lo que el usuario quiere que un diseño completamente desordenado. Pero en primera instancia, siempre debe esforzarse por respetar la preferencia de tamaño de fuente del usuario, incluso la configuración más grande no es TAN grande.
Karu
67

sp = píxel independiente de escala

dp = dip = píxeles independientes de densidad

ppp = puntos por pulgada

Debemos evitar usar sp .

Deberíamos usar dp para soportar múltiples pantallas.

Android admite diferentes resoluciones de pantalla

  • ldpi (bajo) ~ 120 ppp
  • mdpi (medio) ~ 160 ppp
  • hdpi (alto) ~ 240 ppp
  • xhdpi (extra alto) ~ 320 ppp
  • xxhdpi (extra-extra-alto) ~ 480 ppp
  • xxxhdpi (extra-extra-extra-high) ~ 640 ppp

Un dispositivo ldpi de 120 dp tiene 120 píxeles en tamaño de 1 pulgada.

Lo mismo para otras densidades ...

Nosotros, como ingenieros de software, debemos usar esta fórmula de conversión:

píxel = dp * (densidad / 160)

Entonces, 1 dp del dispositivo de 240 ppp tendrá = 1 * (240/160) = 3/2 = 1.5 píxeles.

Y el dispositivo de 480 ppp 1 dp tendrá = 1 * (480/160) = 3 píxeles.

Usando este conocimiento de 1.5 y 3 píxeles, un ingeniero de software puede diseñar diseños para diferentes densidades.

Para verificar los parámetros de pantalla de cualquier dispositivo:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Toast.makeText(
    this,
    "4:" + metrics.heightPixels + "," + metrics.density + ","
    + metrics.densityDpi, Toast.LENGTH_LONG).show();
Kushal
fuente
Muy buen tutorial para comprender es: http: /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
Kushal
55
"Deberíamos evitar usar sp" ¿Por qué es eso? Debería usar sp cuando trate con tamaños de fuente porque tiene en cuenta el tamaño de texto preferido del usuario, developer.android.com/training/multiscreen/screendensities.html
ci_
He respondido en relación con la perspectiva del diseño. Lea el enlace que proporcionó "por lo que debe usar esta unidad de medida al definir el tamaño del texto (pero nunca para los tamaños de diseño)".
Kushal
La pregunta era "¿Diferencia entre px, dp, dip y sp en Android?" su respuesta decía "Debemos evitar usar sp". No se mencionó la "perspectiva de diseño" en ninguna parte.
ci_
Sí ... dp y dip son iguales ... se usan indistintamente ... ¿Mi respuesta resuelve su consulta?
Kushal
61

Diferencia entre dpy spunidades mencionadas como " fuente de la preferencia del usuario tamaño " de las respuestas copiadas de documentación oficial se puede ver en tiempo de ejecución cambiando Settings->Accessibility->Large Textopción.

Large TextLa opción obliga a que el texto se haga 1.3más grande.

private static final float LARGE_FONT_SCALE = 1.3f;

Por supuesto, esto podría depender del proveedor, ya que se encuentra en paquetes / aplicaciones / Configuración .

Auselen
fuente
52

ppp -

  • Puntos por pulgadas
  • Medición de la densidad de píxeles de la pantalla.

px - píxel

  • Para mapear píxeles de pantalla

pt - puntos

  • Aproximadamente 1/72 de pulgada, con respecto al tamaño de la pantalla física.

pulgada - con respecto al tamaño físico de la pantalla (1 pulgada = 2.54 cm).

mm- milímetro - con respecto al tamaño físico de la pantalla.

sp: píxel independiente de la escala.

  • Según la preferencia de tamaño de fuente del usuario.
  • La fuente debe estar en 'sp'.

dip -

  • dip == dp
  • Densidad de píxeles independientes.
  • Varía según la densidad de la pantalla.
  • En pantalla de 160 ppp, 1 dp = 1 píxel.
  • Use dp excepto el tamaño de fuente del texto.

En estándar, se utilizan dp y sp. sp para el tamaño de fuente y dp para todo lo demás.

Fórmula para la conversión de unidades:

px = dp * (ppp / 160);

Density Bucket -> Screen Display => 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  
Arunendra
fuente
De acuerdo con la documentación El compilador acepta tanto "dip" y "DP", aunque "DP" es más consistente con "SP”.
Arunendra
46

Aquí está la fórmula utilizada por Android:

px = dp * (ppp / 160)

Donde dpi es una de las siguientes densidades de pantalla. Para obtener una lista de todas las densidades posibles, vaya aquí

Define las constantes "DENSITY_ *".

  • ldpi (bajo) ~ 120dpi
  • mdpi (medio) ~ 160dpi
  • hdpi (alto) ~ 240 ppp
  • xhdpi (extra alto) ~ 320 ppp
  • xxhdpi (extra-extra-alto) ~ 480dpi
  • xxxhdpi (extra-extra-extra-high) ~ 640 ppp

Tomado de aquí .

Esto resolverá gran parte de la confusión al traducir entre px y dp, si conoce su dpi de pantalla.

Entonces, supongamos que desea una imagen de 60 dp para una pantalla hdpi, entonces el tamaño físico de píxeles de 60 dp es:

px = 60 * (240 / 160)
Dan Borza
fuente
45

Tamaño de pantalla en Androidse agrupan en categorías small, medium, large, extra large, double-extray triple-extra. La densidad de la pantalla es la cantidad de píxeles dentro de un área (como pulgadas) de la pantalla. Generalmente se mide en puntos por pulgada (ppp). La densidad de la pantalla se agrupa en baja, media, alta y extra alta. La resolución es el número total de píxeles en la pantalla.

  • dp: Density Independent Pixel, varía según la densidad de la pantalla. En pantalla de 160 ppp, 1 dp = 1 píxel. Excepto por el tamaño de fuente, use dp siempre.
  • dip: dip == dp. En versiones anteriores de Android, se usaba dip y luego se cambiaba a dp.
  • sp: Scale Independent Pixel, escalado según la preferencia de tamaño de fuente del usuario. Las fuentes deben usar sp.
  • px: nuestro píxel estándar habitual que se asigna al píxel de la pantalla.
  • in: pulgadas, con respecto al tamaño físico de la pantalla.
  • mm: milímetros, con respecto al tamaño físico de la pantalla.
  • pt: 1/72 de pulgada, con respecto al tamaño físico de la pantalla.

Fórmula para la conversión entre unidades

 px = dp * (dpi / 160)

dp a px en el dispositivo

El siguiente ejemplo puede ayudar a comprender mejor. La escala se produce en función del tamaño de la cubeta de 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) y 640 (xxxhdpi). La proporción sugerida por Google para el diseño es 3: 4: 6: 8: 12 para ldpi: mdpi: hdpi: xhdpi: xxhdpi

Ocupará una imagen de 150px X 150px,

  • 150 dp X 150 dp espacio de pantalla en mdpi
  • 100 dp X 100 dp espacio de pantalla en hdpi
  • 75 dp X 75 dp espacio de pantalla en xhdpi

Puede usar la siguiente calculadora de DPI para corregir los tamaños de imagen y otras dimensiones cuando desee tener un diseño de interfaz de usuario uniforme en todos los dispositivos Android.

Calculadora de DPI en Java

/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/


public class DPICalculator {

private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;    

private float forDeviceDensity;
private float width;
private float height;

public DPICalculator(float forDeviceDensity, float width, float height){
    this.forDeviceDensity = forDeviceDensity;
    this.width = width;
    this.height = height;
}

public static void main(String... args) {
    DPICalculator dpiCalculator = new DPICalculator(240,330,120);
    dpiCalculator.calculateDPI();
}


private float getPx(float dp, float value) {
    float px = dp * (value / forDeviceDensity );        
    return px;
}

private void calculateDPI() {

    float ldpiW = getPx(LDPI,width);        
    float ldpiH =  getPx(LDPI,height);
    float mdpiW = getPx(MDPI,width);        
    float mdpiH =  getPx(MDPI,height);        
    float hdpiW = getPx(HDPI,width);        
    float hdpiH =  getPx(HDPI,height);       
    float xdpiW = getPx(XHDPI,width);        
    float xdpiH =  getPx(XHDPI,height);
    float xxdpiW = getPx(XXHDPI,width);        
    float xxdpiH =  getPx(XXHDPI,height);
    float xxxdpiW = getPx(XXXHDPI,width);        
    float xxxdpiH =  getPx(XXXHDPI,height);

    System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
    System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
    System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
    System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
    System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
    System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);        
   }
}

Más información consulte el siguiente enlace.

http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/

Ravi Vaghela
fuente
45

Por favor lea la respuesta del wiki de la comunidad. A continuación se incluye información que se debe considerar además de las respuestas anteriores. La mayoría de los desarrolladores de Android pierden esto mientras desarrollan aplicaciones, así que estoy agregando estos puntos.

sp = píxel independiente de escala

dp = píxeles independientes de densidad

ppp = píxeles de densidad

He revisado las respuestas anteriores ... no las he encontrado exactamente correctas. sp para tamaño de texto, dp para límites de diseño - estándar. Pero sp para el tamaño del texto romperá el diseño si se usa descuidadamente en la mayoría de los dispositivos.

sp toma el tamaño del texto del dispositivo, mientras que dp toma el estándar de densidad del dispositivo (nunca cambia en un dispositivo) Digamos que 100sp el texto puede ocupar el 80% de la pantalla o el 100% de la pantalla dependiendo del tamaño de fuente establecido en el dispositivo

ingrese la descripción de la imagen aquí

Puede usar sp para límites de diseño también, funcionará :) No hay aplicaciones estándar que usen sp para texto completo

Use sp y dp para el tamaño del texto considerando UX.

  • No use sp para texto en la barra de herramientas (puede usar dimens de Android disponibles para diferentes tamaños de pantalla con dp)
  • No use sp para texto en pequeños botones delimitados, texto muy pequeño, etc.

Algunas personas usan un tamaño FONT enorme en su teléfono para mayor legibilidad, por lo que darles un texto pequeño y codificado será un problema de UX. Ponga sp para texto cuando sea necesario, pero asegúrese de que no rompa el diseño cuando el usuario cambie su configuración.

Del mismo modo, si tiene una sola aplicación que admite todas las dimensiones, agregar recursos xxxhdpi aumenta mucho el tamaño de la aplicación. Pero ahora los teléfonos xxxhdpi son comunes, por lo que tenemos que incluir activos xxxhdpi al menos para los iconos en la barra lateral, la barra de herramientas y la barra inferior. Es mejor pasar a imágenes vectoriales para tener imágenes uniformes y de mejor calidad para todos los tamaños de pantalla.

También tenga en cuenta que las personas usan fuentes personalizadas en sus teléfonos. Por lo tanto, la falta de una fuente puede causar problemas con respecto al espaciado y todo. Digamos que el tamaño de texto de 12sp para una fuente personalizada puede tomar algunos píxeles adicionales que la fuente predeterminada.

Consulte el sitio de desarrolladores de Google para obtener información sobre densidades de pantalla y de base para Android. https://developer.android.com/training/multiscreen/screendensities

shijin
fuente
43
  • px: un píxel, igual a lo que se usa en CSS, JavaScript, etc.
  • sp - píxeles independientes de escala
  • dip - píxeles independientes de la densidad

Normalmente sp se usa para tamaños de fuente, mientras que dip se usa (también llamado dp) para otros.

DPC
fuente
39

Me he encontrado con un buen artículo sobre el diseño de la interfaz de usuario de aplicaciones de Android para diferentes resoluciones de pantalla, y me gustaría dejarlo aquí solo para alguien que busque en esta área. Sí, sé que de alguna manera se describe en los documentos de Google (y se menciona en las publicaciones anteriores), lo leí, pero no fue bueno para mí (sí, puedo ser demasiado estúpido)). No me quedó claro cómo diseñar diseños capaces de manejar diferentes tamaños de pantalla. Odio el concepto DP y demás, cuando necesito implementar un diseño de interfaz de usuario "flexible" para diferentes pantallas. (Hola desarrolladores de iOS, sí, tienes razón, es el concepto de Storyboard).

Android no tiene un concepto de interfaz de usuario malo, pero desafortunadamente carece de las características de iOS Storyboard. Diseñar una interfaz de usuario flexible en Android no es algo fácil (en el mejor de los casos).

Aquí va el artículo que me ayudó a entender qué hacer en Android para hacer diseños para diferentes tamaños de pantalla:

Blog de JMSTUDIO: - Decide el tamaño de pantalla de la aplicación de Android

Cómo diseñar la interfaz de usuario para aplicaciones de Android para diferentes tamaños de pantalla

Para diseñar una interfaz de usuario de aplicación para diferentes tamaños de pantalla, nuestro diseño inicial debe cumplir con un espacio mínimo requerido para cada tamaño de pantalla. Android define un tamaño mínimo (en dp) para cada tipo de pantalla generalizada. Aquí hay una guía de tamaño de pantalla de Android. Tamaño mínimo de pantalla para Android en dp Cuando obtenemos el tamaño de la pantalla en dp, no es suficiente para nosotros diseñar la interfaz de usuario de la aplicación de Android. Para cada tamaño de pantalla, necesitamos preparar gráficos e imágenes de mapa de bits para cada densidad. Aquí hay una guía de densidad de pantalla de Android. Directriz de densidad de Android (ppp)

Para un cálculo fácil, podemos seguir la relación de escala 3: 4: 6: 8 entre las cuatro densidades generalizadas. Si creamos una imagen de 36 × 36 píxeles para el dispositivo ldpi, el tamaño de las imágenes de las densidades restantes será 48 × 48 para mdpi, 72 × 72 para hdpi y 96 × 96 para xhdpi.

Cómo diseñar la interfaz de usuario de aplicaciones de Android en Photoshop

Muchos diseñadores tienen problemas para diseñar la interfaz de usuario de la aplicación de Android en Photoshop u otras herramientas de diseño gráfico basadas en píxeles debido a la unidad independiente de la densidad, dp. Los diseñadores no saben cómo asignar dp a píxel. Google tampoco ofrece una guía clara de diseño de interfaz de usuario de Android para ellos, aunque ofrecen una fórmula básica para la traducción de píxeles y dp.

Como definición de Android, 1pd equivale a 1px en un dispositivo de 160 ppp (mdpi). Por lo tanto, queremos diseñar una aplicación de Android para dispositivos Android xlarge con densidad mdpi, podemos definir nuestro tamaño de interfaz de usuario en píxeles como 960 píxeles de ancho y 720 píxeles de altura; Siga la misma regla de mapeo, podemos obtener las siguientes pautas de diseño de interfaz de usuario del tamaño de pantalla de la aplicación de Android:

Tamaño de pantalla de la aplicación de Android en la guía de píxeles

AGREGADO : si también está interesado en la interfaz de usuario "flexible", eche un vistazo a esta biblioteca: un SDK de Android que proporciona una nueva unidad de tamaño: sdp (dp escalable). Esta unidad de tamaño se escala con el tamaño de la pantalla (esto también se menciona en una respuesta aquí, sobre la SDPbiblioteca)

ADDED2 Google finalmente ha comprendido la utilidad del concepto de iOS Storeboard interfaz de usuario, y aquí va ConstraintLayoutpara el mundo Android: Construir una interfaz de usuario sensible que proporciona un ConstraintLayout

Mixaz
fuente
32

1) dp: (density independent pixels)

La cantidad de píxeles representados en una unidad de dp aumentará a medida que aumente la resolución de la pantalla (cuando tenga más puntos / píxeles por pulgada). Por el contrario, en dispositivos con una resolución más baja, la cantidad de píxeles representados en la unidad de dp disminuirá. Como se trata de una unidad relativa, debe tener una línea de base con la que se pueda comparar. Esta línea base es una pantalla de 160 ppp. Esta es la ecuación:px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Esta unidad se escala de acuerdo con el dpi de pantalla (similar a dp), así como la preferencia de tamaño de fuente del usuario.


3) px: (pixels)

Píxeles o puntos reales en la pantalla.


Para más detalles puedes visitar

Guía del desarrollador de Android> Dimension
Guía del desarrollador de Android> Pantallas

IntelliJ Amiya
fuente
29

Tamaño de pantalla en Android se agrupan en categorías ldpi, mdpi, hdpi, xhdpi, xxhdpiy xxxhdpi. La densidad de la pantalla es la cantidad de píxeles dentro de un área (como pulgadas) de la pantalla. Generalmente se mide en puntos por pulgada ( dpi).

PX(Pixels):

  • nuestro píxel estándar habitual que se asigna al píxel de la pantalla. pxestá destinado a píxeles absolutos. Esto se usa si desea dar en términos de píxeles absolutos para ancho o alto. No recomendado.

DP/DIP(Density pixels / Density independent pixels):

  • dip == dp. En versiones anteriores de Android, se usaba dip y luego se cambiaba a dp. Esta es una alternativa de px.

  • En general, nunca usamos pxporque es un valor absoluto. Si usa pxpara establecer el ancho o la altura, y si esa aplicación se está descargando en dispositivos de diferentes tamaños de pantalla, esa vista no se extenderá según el tamaño original de la pantalla.

  • dpSe recomienda su uso en lugar de px. Úselo dpsi desea mencionar el ancho y la altura para crecer y reducirse dinámicamente según los tamaños de pantalla.

  • Si damos dp/dip, Android calculará automáticamente el tamaño de píxel sobre la base de una pantalla de 160 píxeles.

SP(Scale independent pixels):

  • escalado en función de la preferencia de tamaño de fuente del usuario. Las fuentes deben usar sp.

  • al mencionar los tamaños de fuente que se ajustan a varios tamaños de pantalla, use sp. Esto es similar adp .Usar spespecialmente para que los tamaños de fuente crezcan y se reduzcan dinámicamente según los tamaños de pantalla

La documentación de Android dice:

al especificar dimensiones, use siempre unidades dpo spunidades. A dpes un píxel independiente de la densidad que corresponde al tamaño físico de un píxel en 160 dpi. Un spes la misma unidad base, pero se escala según el tamaño de texto preferido del usuario (es un píxel independiente de la escala), por lo que debe usar esta unidad de medida al definir el tamaño del texto

Rajesh
fuente
21

La pantalla de un teléfono móvil está formada por miles de pequeños puntos conocidos como píxeles (px) . Un píxel es el elemento más pequeño que se utiliza para hacer la imagen. Cuanto mayor sea el número de píxeles para hacer una imagen o texto, más nítida se vuelve y hace que la pantalla del teléfono inteligente sea más fácil de leer.

La resolución de la pantalla se mide en términos de número de píxeles en la pantalla. La resolución de pantalla es una especificación de uso común al comprar un dispositivo, pero en realidad no es tan útil cuando se diseña para Android porque pensar en pantallas en términos de píxeles ignora la noción de tamaño físico, que para un dispositivo táctil es realmente muy importante.

Los píxeles independientes de la densidad (dp o dip) permiten al diseñador crear activos que aparecen de la manera esperada, sin importar la resolución o la densidad del dispositivo objetivo.

Un píxel independiente de densidad (dp o dip) es igual a un píxel en la densidad de referencia o 160 ppp (puntos por pulgada).

1 px / 1dp = 160 ppp / 160 ppp

2 px / 1dp = 320 ppp (2x) / 160 ppp

dónde,

dpi es puntos por pulgada

Entonces, a 320 ppp, 1 dp es igual a 2 px.

Fórmula

px / dp = ppp / 160 ppp

Los puntos por pulgada (ppp) son una medida de la nitidez (es decir, la densidad de los puntos iluminados) en una pantalla de visualización. Los puntos por pulgada para una resolución de imagen dada diferirán en función del tamaño general de la pantalla, ya que la misma cantidad de píxeles se distribuye en un espacio diferente.

Trabajar con píxeles independientes de la densidad nos ayuda a lidiar con una situación en la que tiene dos dispositivos con la misma resolución de píxeles, pero con una cantidad diferente de espacio. Supongamos que, en un caso, una tableta y un teléfono tienen la misma resolución de píxeles 1280 por 800 píxeles (160 ppp) y 800 por 1280 píxeles (320 ppp) respectivamente.

Ahora, debido a que una tableta tiene una densidad de referencia (160 ppp), sus tamaños de píxeles físicos e independientes de densidad son los mismos, 1280 por 800. Por otro lado, el teléfono tiene una mayor densidad de píxeles, por lo que tiene la mitad de píxeles independientes de densidad que físicos. píxeles Entonces, un teléfono tiene 400 por 640 píxeles independientes de densidad. Por lo tanto, usar un píxel independiente de la densidad hace que sea más fácil imaginar mentalmente que la tableta tiene mucho más espacio que el teléfono.

Del mismo modo, si tiene dos dispositivos con un tamaño de pantalla similar, pero con una densidad de píxeles diferente, digamos que uno es de 800 por 1280 píxeles (320 ppp) y el otro es de 400 por 640 píxeles (160 ppp), no necesitamos definir totalmente diferentes diseños para estos dos dispositivos, ya que podemos medir los activos en términos de píxeles independientes de densidad, que es lo mismo para ambos dispositivos.

800 por 1280 píxeles (320 ppp) = 400 por 640 píxeles independientes de densidad (dp)

400 por 640 píxeles (160 ppp) = 400 por 640 píxeles independientes de densidad (dp)

La escala de píxeles independientes (sp) es la unidad preferida para el tamaño de fuente. Para fines de accesibilidad, Android permite a los usuarios personalizar el tamaño de fuente de su dispositivo. Los usuarios que tienen problemas para leer el texto pueden aumentar el tamaño de fuente de su dispositivo. Normalmente puede encontrar esta opción en la configuración de pantalla de su teléfono o tableta en tamaño de fuente. A menudo también está disponible a través de la configuración de accesibilidad.

Con píxeles independientes de escala, 16 sp es exactamente lo mismo que 16 dp cuando el tamaño de fuente del dispositivo es normal o 100%. Pero cuando el tamaño de fuente del dispositivo es grande, por ejemplo 125%, 16 sp se traducirán a 20 dp o 1.25 veces 16.

Si usa dp como la unidad para el tamaño de fuente, entonces ese texto tiene un tamaño físico específico sin importar si el usuario ha personalizado el tamaño de fuente del dispositivo. El uso de unidades sp mejorará la experiencia de las personas con problemas de visión.

Referencia : Udacity , Google

Desarrollador de Android
fuente
19

sp: píxel independiente de escala

Debe usarlo con textos porque se escala automáticamente de acuerdo con el tamaño de fuente que utiliza el usuario en su dispositivo.

px: píxel o elemento de imagen es el punto único en la pantalla

A.Saini
fuente
19

Densidad de pixeles

La densidad y la resolución de los píxeles de la pantalla varían según la plataforma. Los píxeles independientes del dispositivo y los píxeles escalables son unidades que proporcionan una forma flexible de acomodar un diseño en todas las plataformas.

Cálculo de densidad de píxeles

El número de píxeles que caben en una pulgada se conoce como densidad de píxeles. Las pantallas de alta densidad tienen más píxeles por pulgada que las de baja densidad ...

El número de píxeles que caben en una pulgada se conoce como densidad de píxeles. Las pantallas de alta densidad tienen más píxeles por pulgada que las de baja densidad. Como resultado, los elementos de la interfaz de usuario de las mismas dimensiones de píxeles aparecen más grandes en pantallas de baja densidad y más pequeños en pantallas de alta densidad.

Para calcular la densidad de la pantalla, puede usar esta ecuación:

Densidad de pantalla = Ancho de pantalla (o altura) en píxeles / Ancho de pantalla (o altura) en pulgadas

Alta densidad frente a pantallas de menor densidad

Independencia de la densidad

La densidad y la resolución de los píxeles de la pantalla varían según la plataforma. Los píxeles independientes del dispositivo y los píxeles escalables son unidades que proporcionan una forma flexible de acomodar un diseño en todas las plataformas.

Cálculo de la densidad de píxeles El número de píxeles que caben en una pulgada se denomina densidad de píxeles . Las pantallas de alta densidad tienen más píxeles por pulgada que las de baja densidad ...

La independencia de densidad se refiere a la visualización uniforme de elementos de la interfaz de usuario en pantallas con diferentes densidades.

Los píxeles independientes de la densidad , escritos como dp (pronunciados " dips "), son unidades flexibles que se escalan para tener dimensiones uniformes en cualquier pantalla. Las interfaces de usuario de materiales utilizan píxeles independientes de la densidad para mostrar elementos de manera consistente en pantallas con diferentes densidades.

  1. Pantalla de baja densidad que se muestra con independencia de densidad.
  2. Pantalla de alta densidad que se muestra con independencia de densidad

Leer el texto completo https://material.io/design/layout/pixel-density.html

lava-lava
fuente
16

Píxeles (px) : corresponde a los píxeles reales en la pantalla. Esto se usa si desea dar en términos de píxeles absolutos para ancho o alto.

Píxeles independientes de la densidad (dp o dip) : 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 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 "dip" y "dp", aunque "dp" es más coherente con "sp".

Píxeles independientes de escala (sp) : es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda que utilice esta unidad cuando especifique tamaños de fuente, para que se ajusten tanto a la densidad de la pantalla como a las preferencias del usuario.

Utilice siempre dp y sp solamente. sp para tamaños de fuente y dp para todo lo demás. Hará que la interfaz de usuario sea compatible con dispositivos Android con diferentes densidades. Puede obtener más información sobre píxeles y dp en https://www.google.com/design/spec/layout/units-measurements.html#units-measurements-density-independent-pixels-dp-

URL de origen: - http://www.androidtutorialshub.com/what-is-the-difference-between-px-dp-dip-sp-on-android/

vasan lalit
fuente
15

Quiero proporcionar una manera fácil de entender dp. De hecho, creo que dpes el más fácil de entender. dpes solo una unidad de longitud física. Es de la misma dimensión que mmo inch. Es conveniente para nosotros escribir 50dp, en 60dplugar de 50/160 incho 60/160 inch, porque uno dpes 1/160 inchcualquiera sea el tamaño o la resolución de la pantalla.

El único problema es que el dpi de Android de algunas pantallas no es preciso. Por ejemplo, una pantalla clasificada a 160 ppp puede tener 170 ppp de hecho. Entonces, el resultado del cálculo de dpes difuso. Debería ser aproximadamente lo mismo que 1/160 inch.

ProtossHuttle
fuente