android - studio - unidades px dp sp in mm




¿Cuál es la diferencia entre “px”, “dip”, “dp” y “sp”? (20)

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

  • px
  • inmersión
  • dp
  • sp

https://code.i-harness.com


sp: escala pixel independiente

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

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


Definiciones

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

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

Android da nombres de alias a varias densidades

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

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

  • 1dp = 1px en mdpi

sp o sip es un píxel independiente de la escala . Se escalan cuando la opción Texto grande está activada en Configuración > Accesibilidad

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

¿Qué usar?

Utilice sp para el tamaño del texto.

Usa dp para todo lo demás.


Básicamente, la única vez 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 dpi, se redondea a 0.


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

Tamaño de pantalla
Tamaño físico real, medido según 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 referido como dpi (puntos por pulgada). Por ejemplo, una pantalla de densidad "baja" tiene menos píxeles dentro de un área física determinada, en comparación con una pantalla de densidad "normal" o "alta". Para simplificar, Android agrupa todas las densidades de pantalla reales en seis densidades generalizadas: baja, media, alta, extra alta, extra extra alta y extra extra 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 operan en diferentes orientaciones de manera predeterminada, sino que la orientación puede cambiar en el 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 deben ocuparse únicamente del tamaño y la densidad de la pantalla, como lo especifican los grupos de tamaño y densidad generalizados.

Pixel independiente de densidad (dp)
Una unidad de píxeles virtual que debe utilizar al definir el diseño de la interfaz de usuario, para expresar las dimensiones o la posición del diseño de forma independiente de la densidad. El píxel independiente de la densidad 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 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 una visualización adecuada de su interfaz de usuario en pantallas con diferentes densidades.

Si realmente desea 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, siempre es bueno saber la cantidad real de dispositivos activos que tienen una configuración de pantalla particular.


De la documentación del desarrollador de Android :

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

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

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

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

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

  6. sp
    Escala : píxeles independientes: esto es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda utilizar esta unidad cuando especifique tamaños de fuente, por lo que se ajustarán tanto para la densidad de la pantalla como para las preferencias del usuario.

De entender la independencia de 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      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

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

Para calcular las dimensiones en un dispositivo real se puede utilizar this aplicación.


He calculado la siguiente fórmula para hacer las conversiones dpi a dp y sp


Puede ver la diferencia entre px y dp en la imagen de abajo, y también puede encontrar que px y dp no pueden garantizar los mismos tamaños físicos en las diferentes pantallas.


Sólo 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 alguna selección de tamaño de fuente novedosa, y el usuario terminará culpando a la aplicación , y no a sus propias opciones de vida.

Además, si tomas una aplicación de fuente sp en una tableta de 160 ppp, verás que todo se amplía ... pero tu fuente, que se verá pequeña en comparación. No es una buena mirada.

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


ppp

  • Puntos por pulgadas
  • Midiendo la densidad de píxeles de la pantalla.

px - pixel

  • Para mapear píxeles de la pantalla

pt - puntos

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

en pulgadas: 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 - pixel independiente de la escala.

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

chapuzón

  • dip == dp
  • Densidad de píxel independiente.
  • Varía según la densidad de pantalla.
  • En pantalla de 160 dpi, 1 dp = 1 pixel.
  • Utilice 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 * (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  

sp = escala píxel independiente

dp = dip = densidad píxeles independientes

dpi = puntos por pulgada

Debemos evitar utilizar sp .

Debemos usar dp para soportar múltiples pantallas.

Android soporta diferentes resoluciones de pantalla

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

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

Lo mismo para otras densidades ...

Nosotros, como ingenieros de software, deberíamos usar esta fórmula de conversión:

píxel = dp * (densidad / 160)

Por lo tanto, el valor de 1 dpi de 240 ppp tendrá = 1 * (240/160) = 3/2 = 1.5 píxeles.

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

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

Para comprobar 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();

Fuente 1

Fuente 2

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

Estos son valores de dimensión definidos en XML. 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, la cantidad de píxeles utilizados para dibujar 1dp se escala según un factor apropiado para los ppp 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 proporción de dp a píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. El uso de 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 reales de sus elementos de UI en diferentes dispositivos.

sp

Píxeles independientes de la escala: esto es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda utilizar esta unidad cuando especifique tamaños de fuente, por lo que se ajustarán tanto para la densidad de la pantalla como para 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 los 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 - Basado en el tamaño físico de la pantalla.

en

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

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


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

Utilice sp para {texto-tamaño}.

Para obtener el mismo tamaño en diferentes densidades de pantalla, Android traduce estas unidades en píxeles en tiempo de ejecución, por lo que no es difícil hacer cálculos matemáticos.

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

Fuente: Programación de Android: Guía de The Big Nerd Ranch


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

px = dp * (dpi / 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) ~ 240dpi
  • xhdpi (extra-alto) ~ 320dpi
  • xxhdpi (extra-extra-alto) ~ 480dpi
  • xxxhdpi (extra-extra-extra-high) ~ 640dpi

Tomado de aquí .

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

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

px = 60 * (240 / 160)

El tamaño de la pantalla en Android se agrupa en categorías small , medium , large , extra large , double-extra y 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 (dpi). La densidad de la pantalla se agrupa como baja, media, alta y extra alta. La resolución es el número total de píxeles en la pantalla.

  • dp: Densidad de píxeles independientes, varía según la densidad de la pantalla. En pantalla de 160 dpi, 1 dp = 1 pixel. Excepto por el tamaño de fuente, use dp siempre.
  • dip: dip == dp. En versiones anteriores de Android se utilizó dip y luego se cambió a dp.
  • sp: Escala independiente de píxeles, escalada 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.
  • en: pulgadas, con respecto al tamaño físico de la pantalla.
  • mm: milímetros, respecto al tamaño físico de la pantalla.
  • Pto: 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 dispositivo

El siguiente ejemplo puede ayudar a entender mejor. La escala se produce según el 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

Una imagen de 150px X 150px ocupará,

  • Espacio de pantalla de 150 dp x 150 dp en mdpi
  • Espacio de pantalla de 100 dp x 100 dp en hdpi
  • Espacio de pantalla de 75 dp x 75 dp en xhdpi

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

Calculadora 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/


SDP , una unidad de tamaño escalable, básicamente no es una unidad, sino recursos de dimensión para diferentes tamaños de pantalla.

Pruebe la biblioteca sdp de Intuit. Resulta muy útil para resolver problemas de la unidad, y puede admitir rápidamente varias pantallas .

Uso

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

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

Atención

¡Utilízalo con cuidado! En la mayoría de los casos, todavía es necesario 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 prefiero ssp para el tamaño del texto.

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


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. pxes para píxeles absolutos. Esto se utiliza si desea dar en términos de píxeles absolutos para el ancho o la altura. No recomendado.

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

  • dip == dp. En versiones anteriores de Android se utilizó dip y luego se cambió a dp. Esta es la alternativa de px.

  • Generalmente nunca usamos pxporque es de valor absoluto. Si utiliza 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 del original de la pantalla.

  • dpSe recomienda su uso en lugar de px. Utilícela dpsi desea mencionar el ancho y la altura para aumentar y disminuir 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):

  • escala según la preferencia de tamaño de fuente del usuario. Las fuentes deben usar sp.

  • al mencionar los tamaños de fuente para adaptarse a varios tamaños de pantalla, utilice sp. Esto es similar a. dpUse spespecialmente para que los tamaños de fuente aumenten y se reduzcan dinámicamente según los tamaños de pantalla

La documentación de Android dice:

Cuando especifique dimensiones, utilice siempre una dpo las spunidades. A dpes un píxel independiente de la densidad que corresponde al tamaño físico de un píxel en 160 dpi. An 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.


Antes de responder a esta pregunta, permítame disminuir primero la cantidad de unidades. Así que aquí tienes: dp o dip son los mismos y se conocen como píxeles independientes de la densidad .

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

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

Las imágenes de abajo muestran una resolución de la misma imagen en diferentes teléfonos:

  • Teléfono con alta resolución de pantalla.

  • Teléfono con baja resolución de pantalla.

2. dip o dp : una unidad abstracta que se basa en la densidad física de la pantalla. Estas unidades son relativas a una pantalla de 160 dpi, por lo que un dp es un píxel en una pantalla de 160 dpi La proporción de dp a píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. La "independencia de densidad" se refiere a la visualización uniforme de los elementos de la interfaz de usuario en pantallas con diferentes densidades.

  • Imagen que muestra 80px (imagen del lado izquierdo) y 80 dp (imagen del lado derecho) . Diferencia de salida.

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

dp = (ancho en píxeles * 160) / densidad de la pantalla

3. sp - significa píxeles escalables. Generalmente sp se usa para textos en la interfaz de usuario y sp conserva la configuración de fuente. Por ejemplo, si un usuario selecciona una fuente más grande que 30 sp , se escalará automáticamente para que aparezca grande según la preferencia del usuario.


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 va a hacer la imagen. Cuanto mayor es el número de píxeles para hacer una imagen o texto, más nítido 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 cantidad 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 al diseñar 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 importante.

Los píxeles independientes de densidad (dp o dip) permiten al diseñador crear activos que aparecen de la forma esperada, sin importar la resolución o 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 dpi (puntos por pulgada).

1 px / 1dp = 160 dpi / 160 dpi

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

dónde,

ppp es puntos por pulgada

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

Fórmula

px / dp = dpi / 160dpi

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 de la pantalla en general, ya que la misma cantidad de píxeles se están distribuyendo en un espacio diferente.

Trabajar con píxeles independientes de densidad nos ayuda a enfrentar una situación como 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 de 1280 por 800 píxeles (160 ppp) y de 800 por 1280 píxeles (320 ppp) respectivamente.

Ahora, debido a que la 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. El teléfono, por otro lado, tiene una densidad de píxeles más alta, por lo que tiene la mitad de píxeles independientes de densidad que físicos. píxeles Así que un teléfono tiene 400 por 640 píxeles de densidad independiente. 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.

De manera similar, 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 es necesario que definamos 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 el mismo para ambos dispositivos.

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

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

Los píxeles independientes de escala (sp) son 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 con el 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 igual a 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 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 ha personalizado el tamaño de fuente del dispositivo. El uso de unidades sp hará una mejor experiencia para las personas con discapacidad visual.

Referencia : Udacity , Google


Por favor lea la respuesta de la wiki de la comunidad. A continuación se mencionan algunos datos que deben considerarse además de las respuestas anteriores.

sp = escala píxel independiente

dp = densidad de píxeles independientes

ppp = densidad de píxeles

He revisado las respuestas anteriores ... no las encuentro exactamente correctas. sp para el tamaño del texto, dp para los límites de diseño - estándar. Pero sp para el tamaño del texto romperá el diseño si se usa sin cuidado 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). Dice que el texto de 100sp puede ocupar el 80% de la pantalla o el 100% de la pantalla, dependiendo del tamaño de fuente establecido en el dispositivo

También puede usar sp para los límites de diseño, funcionará :) No se usa la aplicación estándar con sp para texto completo

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

  • No use sp para el texto en la barra de herramientas (puede usar android dimens disponible o dp)
  • No use sp para texto en botones pequeños delimitados, texto muy pequeño, etc.

Algunas personas usan FONT enorme en su teléfono para facilitar la lectura, por lo que darles un texto de tamaño pequeño y codificado será un problema de UX. Coloque sp para el texto donde sea necesario, pero asegúrese de que no rompa el diseño.

De manera similar, si tiene una sola aplicación que admite todas las dimensiones, agregar activos 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 de mejor calidad y uniformes para todos los tamaños de pantalla.


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 inchel tamaño o la resolución de la pantalla.

El único problema es que, los ppp de Android de algunas pantallas no son precisos. Por ejemplo, una pantalla clasificada a 160 ppp puede tener 170 ppp de hecho. Así que el resultado del cálculo dpes borroso. Debe ser aproximadamente el mismo que 1/160 inch.





units-of-measurement