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.
px Píxeles : corresponde a los píxeles reales en la pantalla.
en pulgadas : según el tamaño físico de la pantalla.
1 pulgada = 2.54 centímetros
mm Milímetros : según el tamaño físico de la pantalla.
Puntos pt : 1/72 de pulgada según el tamaño físico de la pantalla.
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".
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.
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.
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:
¿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
PhysicalWidth1.5 inches 1.5 inches
DotsPerInch(“dpi”)160240Pixels(=width*dpi)240360Density(factor of baseline 160)1.01.5Density-independent pixels 240240(“dip”or“dp”or“dps”)Scale-independent pixels
(“sip”or“sp”)Depends on user font size settings same
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.
¿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.
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.
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.
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 Nexus4.If24 pixels to be converted to dp andif it is a Nexus4 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 or320dpi)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.
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.
@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.
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.
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:
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.
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.
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
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.
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:
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.
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.
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:
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.
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
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.
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
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.
Pantalla de baja densidad que se muestra con independencia de densidad.
Pantalla de alta densidad que se muestra con independencia de densidad
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.
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.
px
,dp
ysp
Respuestas:
De la documentación para desarrolladores de Android :
De la comprensión de la independencia de la densidad en Android :
También se puede encontrar más información en la documentación de diseño de Google .
fuente
dp
hace 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.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í:
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.
fuente
Explicaré más sobre cómo exactamente se convierte dp a px:
150 x 150 px
imagen ocupará150 * 150 dp
espacio en la pantalla.150 x 150 px
imagen ocupará100 * 100 dp
espacio en la pantalla.150x150 px
imagen ocupará75 * 75 dp
espacio en la pantalla.Al revés: por ejemplo, desea agregar una imagen a su aplicación y la necesita para llenar un
100 * 100 dp
control. Deberá crear imágenes de diferentes tamaños para los tamaños de pantalla admitidos:100 * 100 px
imagen para mdpi150 * 150 px
imagen para hdpi200 * 200 px
imagen para xhdpifuente
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
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 ambosdip
ydp
, aunquedp
es más coherente consp
.sp - Píxeles independientes de la escala : es como la
dp
unidad, 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.
fuente
Además, debe tener una comprensión clara sobre los siguientes conceptos:
Tamaño de pantalla:
Densidad de pantalla:
Orientación:
Resolución:
Píxel independiente de la densidad (dp):
Referencia: sitio de desarrolladores de Android
fuente
dp
esdip
. Úselo para todo (margen, relleno, etc.).Úselo solo
sp
para {text-size}.Para obtener el mismo tamaño en diferentes densidades de pantalla, Android traduce estas unidades a píxeles en tiempo de ejecución, por lo que no hay que hacer cálculos matemáticos complicados.
Ver la diferencia entre
px
,dp
ysp
en diferentes tamaños de pantalla.Fuente: Programación de Android: la guía Big Nerd Ranch
fuente
He calculado la fórmula a continuación para hacer las conversiones
dpi
adp
ysp
fuente
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
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.
sp o sip es un píxel independiente de la escala . Se escalan cuando la opción Texto grande está activada en Settings>Accessibility
¿Qué usar?
fuente
Fuente 1
Fuente 2
Fuente 3 : (los datos de la fuente 3 se proporcionan a continuación)
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.
fuente
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.
fuente
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
fuente
¿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)
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.
fuente
Puede ver la diferencia entre
px
ydp
de la imagen a continuación, y también puede encontrar quepx
ydp
no puede garantizar los mismos tamaños físicos en las diferentes pantallas.fuente
Cualquier cosa relacionada con el tamaño del texto y la apariencia debe usar
sp
opt
. Mientras que, cualquier cosa relacionada con el tamaño de los controles, los diseños, etc. debe usarse condp
.Puedes usar ambos
dp
ydip
en sus lugares.fuente
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.
fuente
sp
es un factor, ¿verdad? Cualquier cosa que afectedp
también afectarásp
. Dicho esto, todavía es preferible especificar el tamaño de fuente usando endp
lugar desp
si 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.sp = píxel independiente de escala
dp = dip = píxeles independientes de densidad
ppp = puntos por pulgada
Android admite diferentes resoluciones de pantalla
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:
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:
fuente
Diferencia entre
dp
ysp
unidades 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 cambiandoSettings->Accessibility->Large Text
opción.Large Text
La opción obliga a que el texto se haga1.3
más grande.Por supuesto, esto podría depender del proveedor, ya que se encuentra en paquetes / aplicaciones / Configuración .
fuente
ppp -
px - píxel
pt - puntos
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.
dip -
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:
fuente
Aquí está la fórmula utilizada por Android:
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_ *".
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:
fuente
Tamaño de pantalla en
Android
se agrupan en categoríassmall
,medium
,large
,extra large
,double-extra
ytriple-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.Fórmula para la conversión entre unidades
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,
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
Más información consulte el siguiente enlace.
http://javapapers.com/android/difference-between-dp-dip-sp-px-in-mm-pt-in-android/
fuente
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
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.
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
fuente
Normalmente sp se usa para tamaños de fuente, mientras que dip se usa (también llamado dp) para otros.
fuente
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
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
SDP
biblioteca)ADDED2 Google finalmente ha comprendido la utilidad del concepto de iOS Storeboard interfaz de usuario, y aquí va
ConstraintLayout
para el mundo Android: Construir una interfaz de usuario sensible que proporciona un ConstraintLayoutfuente
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
fuente
Tamaño de pantalla en Android se agrupan en categorías
ldpi
,mdpi
,hdpi
,xhdpi
,xxhdpi
yxxxhdpi
. 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):
px
está 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 adp
. Esta es una alternativa depx
.En general, nunca usamos
px
porque es un valor absoluto. Si usapx
para 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.dp
Se recomienda su uso en lugar depx
. Úselodp
si 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
.Usarsp
especialmente para que los tamaños de fuente crezcan y se reduzcan dinámicamente según los tamaños de pantallaLa documentación de Android dice:
fuente
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
fuente
Debe usarlo con textos porque se escala automáticamente de acuerdo con el tamaño de fuente que utiliza el usuario en su dispositivo.
fuente
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
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.
Leer el texto completo https://material.io/design/layout/pixel-density.html
fuente
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/
fuente
Quiero proporcionar una manera fácil de entender
dp
. De hecho, creo quedp
es el más fácil de entender.dp
es solo una unidad de longitud física. Es de la misma dimensión quemm
oinch
. Es conveniente para nosotros escribir50dp
, en60dp
lugar de50/160 inch
o60/160 inch
, porque unodp
es1/160 inch
cualquiera 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
dp
es difuso. Debería ser aproximadamente lo mismo que1/160 inch
.fuente