Pregunta

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

  • píxeles
  • aderezo
  • dp
  • sp
¿Fue útil?

Solución

Desde el Android de documentación de desarrolladores :

  1.   

    px
       Pixels -. Corresponde a píxeles reales en la pantalla

  2.   


       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 dip
       Densidad -independiente Píxeles - una unidad de resumen que se basa en la densidad física de la pantalla. Estas unidades son en relación con un 160       pantalla ppp, por lo que uno dp es un píxel en una pantalla de 160 dpi. 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 tanto "dip" y       "DP", aunque "DP" es más consistente con "SP".

  6.   

    sp
       Escala -independiente Píxeles - esto es como la unidad de dp, pero también es escalado por preferencia el tamaño de fuente del usuario. Se recomienda que se       utilizar esta unidad al especificar tamaños de fuente, por lo que se ajustarán       por tanto la densidad de la pantalla y la preferencia del usuario.

entendimiento Independencia 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 Google Diseño de documentación .

Otros consejos

Casi todo acerca de 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, medida como diagonal de pantalla.   Para simplificar, grupos Android toda pantalla real en cuatro tamaños   tamaños generalizadas.: pequeñas, normales, grandes y extragrandes

     

densidad de pantalla
  El número de píxeles dentro de un área física de la   pantalla; normalmente se conoce como ppp (puntos por pulgada). Por ejemplo, una   pantalla de "baja" densidad tiene un menor número de píxeles dentro de un área física determinada,   en comparación con una pantalla de "normal" o "alta" densidad. Por simplicidad,   grupos Android todas las densidades reales de la pantalla en seis generalizadas   densidades: bajo, medio, alto, extra-alta, extra-extra-alta, y   extra-extra-extra-alta.

     

Orientación
La orientación de la pantalla desde el punto de del usuario   ver. Esto es, ya sea horizontal o vertical, lo que significa que la pantalla de   relación de aspecto es ya sea ancho o alto, respectivamente. Tenga en cuenta que no se   sólo operan diferentes dispositivos en diferentes orientaciones de   defecto, pero la orientación puede cambiar en tiempo de ejecución cuando el usuario   hace girar el dispositivo.

     

Resolución Francia El número total de píxeles físicos en   una pantalla. Al añadir soporte para múltiples pantallas, aplicaciones hacen   No trabajar directamente con la resolución; aplicaciones deben estar preocupados   solamente con el tamaño de pantalla y la densidad, tal como se especifica por el generalizado   tamaño y la densidad grupos.

     

píxeles independientes de la densidad (DP)
Un virtuales   unidad de píxel que se debe utilizar en la definición de diseño de interfaz de usuario, para expresar   dimensiones del diseño o la posición 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 de la línea de base asumida por el sistema para una   pantalla densidad "medio". En tiempo de ejecución, el sistema maneja de forma transparente   cualquier escala de las unidades de DP, según sea necesario, en base a la densidad real   de la pantalla en uso. La conversión de las unidades de DP a píxeles de la pantalla es   sencillo:   px = dp * (dpi / 160).   Por ejemplo, en una pantalla de 240 ppp, 1 dp   es igual a 1,5 pixeles físicos. Siempre se debe utilizar unidades de DP si   la definición de la interfaz de usuario de la aplicación, para garantizar la correcta visualización de la interfaz de usuario de   pantallas con diferentes densidades.

Si usted es cualquier serio el desarrollo de una aplicación para Android desde hace más de un tipo de dispositivo, debe haber leído el documento de apoyo al desarrollo pantallas al menos una vez. Además de eso, siempre es una buena cosa para saber el número real de los dispositivos activos que tienen una configuración de pantalla en particular.

voy a elaborar más sobre cómo funciona exactamente dp convertir a PX:

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

El revés: decir, que desea añadir una imagen para su aplicación y es necesario que se llene un control 100 * 100 dp. Tendrá que crear diferentes imágenes de tamaño para los tamaños de pantalla compatibles:

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

px Píxeles -. Punto por cada escala se corresponde con píxeles reales en la pantalla

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 - píxeles independientes - una unidad abstracta que se basa en la densidad física de la pantalla. Estas unidades son en relación con una pantalla de 160 dpi, así que uno dp es un píxel en una pantalla de 160 dpi. 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 tanto dip y dp, aunque dp es más consistente con sp

sp Píxeles -scale independiente - esto es como la unidad dp,  pero también es escalado por preferencia el tamaño de fuente del usuario. Se recomienda el uso de esta unidad al especificar tamaños de fuente,  por lo que se pueden ajustar tanto para la densidad de pantalla y la preferencia del usuario.

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

                          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

Además usted debe tener claro entendimiento acerca de los siguientes conceptos:

Tamaño de pantalla:

  

tamaño físico real, medida como diagonal de pantalla. Para simplificar, grupos Android toda pantalla real en el tamaño   cuatro tamaños: generalizadas. pequeñas, normal, grande y extra grande

densidad de pantalla:

  

La cantidad de pixeles dentro de un área física de la pantalla; normalmente se conoce como ppp (puntos por pulgada). Por ejemplo, una   pantalla de "baja" densidad tiene un menor número de píxeles dentro de un área física determinada,   en comparación con una pantalla de "normal" o "alta" densidad. Por simplicidad,   grupos Android todas las densidades reales de la pantalla en cuatro generalizadas   densidades:. bajo, medio, alto, y alto adicional

Orientación:

  

La orientación de la pantalla desde el punto de vista del usuario. Esto es, ya sea horizontal o vertical, lo que significa que la   relación de aspecto de pantalla es o bien de ancho o alto, respectivamente. Tenga en cuenta   que no sólo los diferentes dispositivos operan en diferentes orientaciones   por defecto, pero la orientación puede cambiar en tiempo de ejecución cuando el usuario   hace girar el dispositivo.

Resolución:

  

El número total de píxeles físicos en una pantalla. Al añadir soporte para múltiples pantallas, aplicaciones no funcionan directamente   con la resolución; aplicaciones deben preocuparse solamente con la pantalla   tamaño y densidad, tal como se especifica por el tamaño y la densidad generalizada   grupos.

pixel independiente de la densidad (dp):

  

Una unidad de píxel virtual que se debe utilizar en la definición de diseño de interfaz de usuario, para expresar o dimensiones del diseño   posición 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 dpi 160, que es el   densidad de la línea de base asumido por el sistema para una pantalla de densidad "medio".   En tiempo de ejecución, el sistema maneja de forma transparente cualquier escalamiento de la DP   unidades, según sea necesario, en base a 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 es igual a 1,5 física   píxeles. Siempre se debe utilizar unidades dp la hora de definir su   La interfaz de usuario de la aplicación, para garantizar la correcta visualización de la interfaz de usuario en las pantallas con   diferentes densidades.

Referencia: desarrolladores de Android sitio

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

Uso sp de texto {} de tamaño solamente.


Para obtener el mismo tamaño en diferentes densidades de pantalla, Android traduce estas unidades en píxeles en tiempo de ejecución, lo que no hay matemáticas difícil para que usted pueda hacer.


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

Enter descripción de la imagen aquí

Fuente: Programación Android: La Guía del empollón Rancho Grande

he calculado la fórmula siguiente para realizar las conversiones dpi a dp y sp introducir descripción de la imagen aquí

Definiciones

px o punto es un píxeles 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) ~ 120 ppp
  • MDPI (medio) ~ 160dpi
  • IPAP (alto) ~ 240 ppp
    • la mayoría de los dispositivos en 2015 están aquí
  • xhdpi (extra-alta) ~ 320dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-alta) ~ 480dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-alta) ~ 640dpi

dip o dp son píxeles de densidad-indenpendant , es decir, que corresponden a más o menos píxeles dependiendo de la densidad física.

  • 1DP = 1px en MDPI

 introducir descripción de la imagen aquí

sp o SIP es un escala independiente de píxeles . Ellos se escalan cuando el Texto de gran tamaño opción está activada en Configuración > Accesibilidad

  • 1SP = 1DP
  • 1sp = 1.2dp con la accesibilidad Texto de gran tamaño

Qué usan?

  

Uso sp Tamaño del texto.

     

Uso dp para todo lo demás.

Fuente 1

Fuente 2

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

  

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

     

dp

     

píxeles independientes de la densidad - Una unidad abstracta que se basa en el   densidad física de la pantalla. Estas unidades son en relación con un 160 dpi   (puntos por pulgada) de la pantalla, en la que 1DP es aproximadamente igual a 1px. Cuando   que se ejecuta en una pantalla de mayor densidad, el número de píxeles usado para dibujar   1DP es escalado por un factor apropiado para dpi de la pantalla.   Asimismo, cuando en una pantalla de densidad más baja, el número de píxeles utilizados   para 1DP está reducido. La relación de dp-a-pixel cambiará con la   densidad de la pantalla, pero no necesariamente en proporción directa. El uso de dp   unidades (en lugar de unidades de píxeles) es una solución simple para hacer la vista   dimensiones en su diseño para cambiar el tamaño de pantalla diferente adecuadamente   densidades. En otras palabras, se proporciona consistencia para el mundo real   tamaños de los elementos de la interfaz de usuario a través de diferentes dispositivos.

     

sp

     

píxeles independientes de la escala - Esto es como la unidad DP, pero también es   escalado por preferencia el tamaño de fuente del usuario. Se recomienda que utilice   esta unidad al especificar tamaños de fuente, por lo que será ajustado por   tanto la densidad de la pantalla y la preferencia del usuario.

     

pt

     

Puntos -. 1/72 de pulgada basado en 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 debido a la representación real puede variar   dispositivos a través de; cada uno de los dispositivos pueden tener un número diferente de píxeles por   pulgadas y puede tener píxeles más o menos total disponible en la pantalla.

     

mm

     

Milímetros - Basado en el tamaño físico de la pantalla

.      

     

pulgadas -. Basado en el tamaño físico de la pantalla

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

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

En> 160 dpi, puede llegar a 2-3 píxeles;

En> 120 ppp, que se redondea a 0.

px

Píxeles - corresponde a píxeles reales en la pantalla

.

dp o dip

píxeles independientes de la densidad - una unidad de resumen que se basa en la densidad física de la pantalla. Estas unidades son en relación con una pantalla de 160 dpi, así que un DP es un píxel en una pantalla de 160 dpi.

Uso de DP:

independencia Densidad - Su aplicación logra “independencia densidad” cuando se conserva el tamaño físico (desde el punto de vista del usuario) de elementos de la interfaz de usuario cuando se muestra en las pantallas con diferentes densidades. (Es decir,) La imagen debe ser del mismo tamaño (no ampliado o shrinked) en diferentes tipos de pantallas.

sp

píxeles independientes de la escala - esto es como la unidad DP, pero también es escalado por la preferencia de tamaño de fuente del usuario

.

http://developer.android.com/guide/topics/resources/more -resources.html # Dimensión

Donde utilizar lo y relación entre px y dp?

píxeles independientes de la densidad (DP)

Una unidad de píxel virtual que se debe utilizar en la definición de diseño de interfaz de usuario, para expresar las dimensiones o la posición de disposición 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 dpi 160, que es la densidad de la línea de base asumido por el sistema para una pantalla de densidad "medio". En tiempo de ejecución, el sistema maneja de forma transparente cualquier escala de las unidades de DP, según sea necesario, en base a 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 dpi, 1 dp es igual a 1,5 pixeles físicos. Siempre se debe utilizar unidades dp en la definición de la interfaz de usuario de la aplicación, para garantizar correcta visualización de la interfaz de usuario en las pantallas con diferentes densidades.

La comprensión de píxeles a DP y viceversa es muy esencial (sobre todo para dar valores exactos a dp 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
  • Trate de obtener todos los valores de los píxeles en los números pares del equipo creativo. De lo contrario pierde precisión que ocurrirá mientras la multiplicación por 0,5.

px

Se explica anteriormente. Trate de evitar en archivos de diseño. Sin embargo, hay algunos casos donde se requiere px. por ejemplo, la línea de ListView divisor. px es mejor aquí para dar una línea de un píxel como un divisor para todos a través de resoluciones de pantalla.

sp

El uso de tamaños de fuente sp. Sólo entonces la fuente dentro de la aplicación cambiará mientras cambia el tamaño de las fuentes de dispositivo (es decir, Display -> Fuentes en el dispositivo). Si desea mantener un tipo de letra de tamaño estática dentro de la aplicación, se puede dar la dimensión de la fuente en DP. En tal caso, nunca va a cambiar. Los desarrolladores pueden obtener tal requisito para algunas pantallas específicas, por eso, los desarrolladores pueden utilizar en lugar de dp sp. En todos los demás casos, se recomienda sp.

Se puede ver la diferencia entre px y dp de la imagen de abajo, y también se puede encontrar que el px y dp no podían garantizar las mismas dimensiones físicas de las diferentes pantallas.

introducir descripción de la imagen aquí

Todo lo relacionado con el tamaño del texto y la apariencia debe utilizar sp o pt. Considerando que, con todo lo relacionado con el tamaño de los controles, los diseños, etc. debe ser utilizado con dp.

Puede utilizar tanto dp y dip en sus lugares.

Yo sólo uso dp.

Hay un montón de hablar sobre el uso de "SP" para los tamaños de fuente, y aunque aprecio el punto, no creo que es lo que hay que hacer desde el punto de vista del diseño. Puede terminar rompiendo su diseño si el usuario tiene alguna selección tamaño de la fuente poco firme, y el usuario va a terminar culpando la aplicación , y no de sus propias opciones de vida.

Además, si usted toma una aplicación sp-fuente en una tableta de 160 dpi, se encuentra que todo escala hasta ... pero su fuente, que se va a parecer pequeño en comparación. No es un buen aspecto.

Si bien la idea de fuentes "SP" tiene un buen corazón, es una mala idea. Seguir con dp para todo.

sp = píxeles independientes escala

dp = dip = densidad píxeles independientes

dpi = puntos por pulgada

  

Hay que evitar utilizar sp .

     

debería utilizar dp para soportar múltiples pantallas.

Android soporta diferentes resoluciones de pantalla

  • LDPI (bajo) ~ 120 ppp
  • MDPI (medio) ~ 160 dpi
  • IPAP (alto) ~ 240 ppp
  • xhdpi (extra-alta) ~ 320 ppp
  • xxhdpi (extra-extra-alta) ~ 480 ppp
  • xxxhdpi (extra-extra-extra-alta) ~ 640 ppp

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

Lo mismo para otras densidades ...

Nosotros, como ingenieros de software deben utilizar esta fórmula de conversión:

  

pixel = dp * (densidad / 160)

Así 1 dp 240 dpi de dispositivo tendrá = 1 * (240/160) = 3/2 = 1,5 píxeles.

Y 480 dpi 1 dp del dispositivo tendrá = 1 * (480/160) = 3 píxeles.

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

Para comprobar parámetros de la 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();

Diferencia entre unidades dp y sp mencionados como " Preferencia de tamaño de la fuente del usuario " por las respuestas copiadas de documentación oficial se puede ver en tiempo de ejecución por la opción de cambiar Settings->Accessibility->Large Text.

opción fuerza Large Text texto se convierta en tiempos 1.3 más grande.

private static final float LARGE_FONT_SCALE = 1.3f;

Esto podría ser bien del proveedor depende, por supuesto, ya que se encuentra en paquetes / aplicaciones / configuración .

dpi -

  • puntos por pulgadas
  • La medición de la densidad de píxeles de la pantalla.

píxeles - pixel

  • Para píxeles de la pantalla de mapeo

pt - puntos

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

en - pulgadas  -. Con respecto al tamaño de la pantalla física (1 pulgada = 2,54 cm)

mm- milímetro  -. Con respecto al tamaño de la pantalla física

sp -. Píxeles independientes de la escala

  • basada en la preferencia usuario `s tamaño de fuente.
  • fuente debe estar en 'sp'.

dip -

  • dip == dp
  • densidad de píxeles independientes.
  • Se varía en función de la densidad de la pantalla.
  • En 160 dpi, 1 dp = 1 pixel.
  • Uso dp, excepto el tamaño de fuente del texto.
se utilizan

En estándar, 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 * (dpi / 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  

Ésta es la fórmula usada 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 ir aquí

Se define la "DENSITY_ *" constantes.

  • LDPI (bajo) ~ 120 ppp
  • MDPI (medio) ~ 160dpi
  • IPAP (alto) ~ 240 ppp
  • xhdpi (extra-alta) ~ 320dpi
  • xxhdpi (extra-extra-alta) ~ 480dpi
  • xxxhdpi (extra-extra-extra-alta) ~ 640dpi

href="http://developer.android.com/guide/practices/screens_support.html" aquí .

Esto ordenará a cabo una gran cantidad de la confusión en la traducción entre px y dp, si sabe que su pantalla dpi.

Por lo tanto, digamos que usted quiere una imagen de 60 dp para una pantalla de IPAP a continuación, el tamaño de píxel físico de 60 DP es:

px = 60 * (240 / 160)

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

  • dp: densidad de píxeles independiente, que varía basándose en la densidad pantalla. En 160 dpi, 1 dp = 1 pixel. Excepto por el tamaño de fuente, utilice siempre dp.
  • dip: dip == dp. En versiones anteriores de Android por inmersión fue utilizado y más tarde cambiado a dp.
  • SP: Escala Pixel Independiente, a escala basándose en las preferencias del usuario tamaño de la fuente. Fuentes deben utilizar sp.
  • px:. nuestra píxel estándar habitual, que se asigna al pixel de la pantalla
  • en:. pulgadas, con respecto al tamaño de la pantalla física
  • mm:. milímetros, con respecto al tamaño de la pantalla física
  • pt:. 1/72 de una pulgada, con respecto al tamaño de la pantalla física

Fórmula para la conversión entre unidades

 px = dp * (dpi / 160)

dp a PX en el dispositivo

El siguiente ejemplo puede ayudar a entender mejor. El escalado se produce basa en el tamaño cubo de 120 (LDPI), 160 (MDPI), 240 (IPAP), 320 (xhdpi), 480 (xxhdpi) y 640 (xxxhdpi). El Google sugirió relación para el diseño es de 3: 4: 6: 8: 12 para LDPI: MDPI: IPAP: xhdpi: xxhdpi

Una imagen de 150 píxeles x 150 píxeles ocupará,

  
      espacio de la pantalla
  • 150 dp X 150 dp en MDPI
  •   espacio de la pantalla
  • 100 dp X 100 dp en IPAP
  •   espacio de la pantalla
  • 75 dp X 75 dp en xhdpi
  •   

Usted puede utilizar el siguiente calculador de DPI para arreglar sus tamaños de imagen y otras dimensiones cuando se desea tener un diseño de interfaz de usuario uniforme en todos los dispositivos Android.

DPI Calculator 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 se refiere siguiente enlace.

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

  • píxeles -. Un píxel, lo mismo que se utiliza en CSS, JavaScript, etc.
  • sp - píxeles independientes de la escala
  • DIP - independientes de la densidad pixeles

Normalmente SP se utiliza para tamaños de fuente, mientras que la inmersión se utiliza (también llamado dp) para otros.

Por favor leer la respuesta de la comunidad wiki. A continuación se presentan algunos datos a tener en cuenta, además de las respuestas antes mencionadas.

sp = píxeles independientes escala

dp = densidad píxeles independientes

dpi = densidad pixeles

He pasado por las respuestas anteriores ... no encontrar exactamente correcto. SP para el tamaño del texto, dp de los límites de diseño - estándar. Pero sp para el tamaño del texto romperá el diseño si se utiliza sin cuidado en la mayoría de los dispositivos.

sp tomar la textsize del dispositivo, mientras que dp tomar la de estándar de densidad dispositivo (nunca cambiar en un dispositivo) Say texto 100SP lata ocupa el 80% de la pantalla o el 100% de la pantalla en función del tamaño de fuente establecido en el dispositivo

introducir descripción de la imagen aquí

Puede utilizar sp para los límites de diseño también, va a trabajar :) No existe un estándar de usar una aplicación sp para el texto entero

Uso SP y DP para el tamaño del texto teniendo en cuenta UX.

  • sp no uso de texto en la barra de herramientas (se puede utilizar Dimens android disponibles para diferentes tamaños de pantalla con DP)
  • sp no uso para el texto en pequeños botones acotadas, texto muy pequeño, etc.

Algunas personas usan enorme tamaño de fuente en su teléfono para más facilidad de lectura, dándoles pequeño tamaño de texto codificado será un problema UX. Ponga sp para el texto, cuando sea necesario, pero asegúrese de que no se rompa el diseño.

Del mismo modo, si usted tiene una sola aplicación apoyando todas las dimensiones, la adición de activos xxxhdpi aumenta el tamaño de aplicación mucho. 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, barra de herramientas y la barra inferior. Es mejor pasar a imágenes vectoriales tener un uniforme y las imágenes de mejor calidad para todos los tamaños de pantalla.

Tenga en cuenta también que la gente usa fuente personalizada en su teléfono. Por lo tanto la falta de una fuente puede causar problemas en relación con el espaciamiento y todo. Decir 12SP tamaño del texto de una fuente personalizada puede tener algunos píxeles adicionales de la fuente por defecto.

Consulte sitio de desarrolladores de Google para screendensities y detalles basedensity para Android. https://developer.android.com/training/multiscreen/screendensities

Encontré 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í, puede que sea demasiado estúpido)).No me quedó claro cómo diseñar diseños capaces de manejar diferentes tamaños de pantalla.Odio el concepto de 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 mal concepto de interfaz de usuario, pero desafortunadamente carece de las funciones de Storyboard de iOS.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 crear diseños para diferentes tamaños de pantalla:

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

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

Para diseñar una interfaz de usuario de la 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 generalizado.Aquí hay una guía de tamaño de pantalla de Android. Minimum Screen Size for Android in dpCuando obtenemos el tamaño de la pantalla en DP, no es suficiente para diseñar la interfaz de usuario de la aplicación Android.Para cada tamaño de pantalla, necesitamos preparar gráficos y imágenes de mapa de bits para cada densidad.Aquí hay una guía de densidad de pantalla de Android. Android Density Guideline (dpi)

Para un fácil cálculo, 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 de descanso será de 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 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 le da una guía clara de diseño de la interfaz de usuario de Android, aunque dan una fórmula básica para la traducción DP y Pixel.

Según la definición de Android, 1pd equivale a 1px en un dispositivo de 160 ppp (mdpi).Por lo tanto, queremos diseñar una aplicación Android para el dispositivo Android Xlarge con densidad MDPI, podemos definir nuestro tamaño de UI en píxel como 960 píxeles de ancho y 720 px de altura;Siga la misma regla de mapeo, podemos obtener la siguiente guía de diseño de la interfaz de usuario del tamaño de la pantalla de Android:

Android App Screen Size in Pixel Guideline

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 unidad de nuevo tamaño: sdp (dp escalable).Esta unidad de tamaño se adapta al tamaño de la pantalla. (esto también se menciona en una respuesta aquí, sobre SDP biblioteca)

AGREGADO2 Google finalmente ha comprendido la utilidad del concepto de interfaz de usuario del Storeboard de iOS, y aquí va ConstraintLayout para el mundo Android: Cree una interfaz de usuario responsiva con ConstraintLayout

1) dp: (density independent pixels)

El número de píxeles representados en una unidad de dp aumentará a medida que aumenta la resolución de la pantalla (cuando se tiene más puntos / píxeles por pulgada). Por el contrario en los dispositivos con una resolución más baja, el número de píxeles representados en la unidad de dp disminuirá. Dado que esta es una unidad relativa, tiene que tener una línea de base para comparar con. Esta línea de base es una pantalla de 160 dpi. Esta es la ecuación: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

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


3) px: (pixels)

píxeles reales o los puntos en la pantalla.


Para más detalles se puede visitar

  

Guía Android desarrollador> Dimensión
   Guía Android desarrollador> Pantallas

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

PX(Pixels):

  • nuestra píxel estándar habitual, que se asigna al pixel de la pantalla. px está destinado para los píxeles absolutos. Esto se utiliza si se quiere dar en términos de píxeles absolutos de anchura o altura. No se recomienda.

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

  • dip == dp. En versiones anteriores de Android por inmersión fue utilizado y más tarde cambiado a dp. Esta es la alternativa de px.

  • En general, nunca usamos px porque es valor absoluto. Si utiliza px para establecer la anchura o la altura, y si esa solicitud está siendo descargado en dispositivos del tamaño de pantalla diferente, entonces ese punto de vista no se estira de acuerdo con el tamaño original de la pantalla.

  • dp es muy recomendable para usar en lugar de px. Utilice dp si se quiere hablar de anchura y altura para crecer y reducir el tamaño dinámicamente en función de los tamaños de pantalla.

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

SP(Scale independent pixels):

  • a escala basada en la preferencia tamaño de fuente del usuario. Fuentes deben utilizar sp.

  • cuando se habla de los tamaños de fuente para adaptarse a diversos tamaños de pantalla, el uso sp. Esto es similar a dp.Use sp especialmente para los tamaños de fuente crezcan y se contraen de forma dinámica basándose en los tamaños de pantalla

Documentación Android dice:

  

al especificar las dimensiones, siempre utilizar cualquiera dp o unidades sp. Un dp es   un píxel independiente de la densidad que se corresponde con el tamaño físico de una   pixel a 160 dpi. Un sp es la misma unidad base, pero es escalado por la   tamaño de texto preferido por el usuario (que es un píxel independiente de la escala), por lo que   debe utilizar esta unidad de medición cuando se define el tamaño del texto

La pantalla de un teléfono móvil se compone de miles de diminutos puntos conocidos como píxeles (px) . Un píxel es el elemento más pequeño que va a hacer el cuadro. Cuanto mayor sea el número de píxeles para hacer una foto o un texto, más agudo se vuelve y hace que la pantalla del teléfono inteligente más fácilmente legible.

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

densidad de píxeles independientes (DP o por inmersión) permite al diseñador crear activos que aparecen de una manera esperada, independientemente de la resolución o la densidad del dispositivo de destino.

Un píxel independiente densidad (dp o inmersión) es igual a un píxel en la densidad de línea de base o 160 dpi (puntos por pulgada).

1 px / 1DP = 160 dpi / 160 dpi

2 px / 1DP = 320 dpi (2x) / 160 dpi

donde,

ppp puntos por pulgada

Así, en 320 dpi, 1 dp es igual a 2 px.

Formula

px / dp = dpi / 160dpi

puntos por pulgada (dpi) es una medida de la definición (es decir, la densidad de 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 total de la pantalla ya que el mismo número de píxeles se están repartidos en un espacio diferente.

Trabajar con densidad de píxeles independientes nos ayudan a tratar con una situación como en la que tiene dos dispositivos con la misma resolución de píxeles, pero que difieren cantidad de espacio. Supongamos que en un caso, una tableta y el teléfono tiene la misma resolución de píxeles 1280 por 800 píxeles (160 dpi) y 800 por 1280 píxeles (320 dpi), respectivamente.

Ahora, debido a una tableta que está en la densidad de línea de base (160 dpi) sus tamaños pixeles físicas y densidad independiente son los mismos 1280, por 800. El teléfono en el otro lado tiene una densidad de píxeles superior, por lo que tiene un medio como muchos densidad independiente píxeles como píxeles físicos. Por lo que un teléfono dispone de 400 por 640 píxeles de densidad independientes. Así, utilizando un píxel independiente de la densidad hace que sea más fácil de imaginar mentalmente que la tableta tiene mucho más espacio que el teléfono.

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

800 por 1280 píxeles (320dpi) = 400 por pixel independiente 640 densidad (dp)

400 por 640 píxeles (160 dpi) = 400 por pixel independiente 640 densidad (dp)

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

Con píxeles independientes de escala, 16 SP es exactamente el 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á a 20 dp o 1,25 veces 16.

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

referencia Udacity , Google

  

sp: pixel independiente escala

Se debe utilizar con los textos porque se escala automáticamente según el tamaño de fuente que está siendo utilizado por el usuario en su dispositivo.

  

px: pixel o elemento de imagen es el único punto en la pantalla

Antes de responder a esta pregunta me dejó disminuir el número de unidades de la primera. Así que aquí van:. DP o por inmersión son ambos iguales y son conocidos como píxeles independientes de la densidad

1. px - significa píxeles. Los píxeles son un solo punto, punto en una pantalla. En general, en la industria móvil se mide en ppi (píxeles por pulgada). Resolución de la pantalla es directamente proporcional a ppi, cuanto mayor sea el número de píxeles por pulgada más alta es la resolución de pantalla.

Por ejemplo, si dibuja una imagen de un tamaño 200 px * 200 px , su apariencia debe ser diferente en un dispositivo de alta resolución en comparación con una baja dispositivo de resolución. La razón es un 200 px imagen en un teléfono de baja resolución se vea más grande que en un dispositivo de alta resolución.

A continuación las imágenes están mostrando una resolución de la misma imagen en diferentes teléfonos -

  • Teléfono con pantalla de alta resolución

     Enter descripción de la imagen aquí

  • Teléfono con pantalla de baja resolución

     Enter descripción de la imagen aquí

2. inmersión o dp - una unidad de resumen que se basa en la densidad física de la pantalla. Estas unidades son en relación con un 160 pantalla ppp, por lo que uno dp es un píxel en un 160 pantalla dpi. La relación de dp-a-píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. "Independencia Densidad" se refiere a la pantalla uniforme de elementos de la interfaz en las pantallas con diferentes densidades.

  • Imagen que está mostrando 80px (imagen izquierda) y 80 dp (imagen de la derecha) . Pedido diferencia.

 Enter descripción de la imagen aquí

A dp es igual a un píxel físico en una pantalla con una densidad de 160 . Para calcular dp:

dp = (anchura en píxeles * 160) / densidad pantalla

3. sp - significa píxeles escalables. En general sp se utiliza para texto de la interfaz de usuario, y sp conserva la configuración de fuente. Por ejemplo, si un usuario selecciona un tipo de letra más grande que 30 sp será auto escala a aparecer grande según una preferencia de usuario.

Quiero proporcionar una manera fácil de entender dp. De hecho, creo que dp es la más fácil de entender. dp es sólo una unidad de longitud física. Es de la misma dimensión que mm o inch. Es sólo conveniente para que escribamos 50dp, 60dp en lugar de 50/160 inch o 60/160 inch, porque uno solo es dp 1/160 inch sea cual sea el tamaño de la pantalla o resolución.

El único problema es que, los puntos por pulgada androide de algunas pantallas no son exactos. Por ejemplo, una pantalla clasificado a 160dpi puede tener 170dpi de hecho. Así, el resultado del cálculo dp es difusa. Debe ser aproximadamente la misma que 1/160 inch.

SDP - una unidad de tamaño escalable -. Básicamente no es una unidad, pero los recursos de dimensiones para diferentes tamaños de pantalla

Trate la href="https://github.com/intuit/sdp" rel="nofollow noreferrer"> SDP biblioteca de Intuit. Es muy práctico para resolver los problemas de la unidad, y se puede apoyar rápidamente múltiples pantallas .

Uso

android:paddingBottom="@dimen/_15sdp" para android:layout_marginTop="@dimen/_minus10sdp" positivo y negativo para el SDP SDP

Tiene un valor equivalente en dp para cada tamaño en carpetas values-sw<N>dp (sw = smallestWidth).

Atención:

Se usa con cuidado! En la mayoría de los casos todavía se necesita para diseñar un diseño diferente para las tabletas.

Ejemplo

<LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="@dimen/_minus10sdp"
          android:paddingBottom="@dimen/_15sdp"
          android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="♡"
                    android:textColor="#ED6C27"
                    android:textSize="@dimen/_70sdp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="U"
                    android:textColor="@android:color/black"
                    android:textSize="@dimen/_70sdp" />
            </LinearLayout>

Puede usar DB para el tamaño del texto, pero yo prefiero ssp para el tamaño del texto.

Para más detalles, consultar la biblioteca página de GitHub .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top