Veo que esta es probablemente una pregunta novata, pero realmente me confunde.
Estoy leyendo documentos de Google Material Design, junto con algunas de sus implementaciones en css. La especificación está escrita en Android dp
, mientras que los códigos CSS se utilizan px
como una unidad de longitud.
Lo que me confunde es que las implementaciones de CSS a menudo usan el valor exacto de la especificación, por ejemplo, un brindis debería tener :
Altura de snackbar de una línea: 48 dp de altura
Ancho mínimo: 288 dp
2 dp esquina redondeada
min-height: 48px;
min-width: 288px;
...
border-radius: 2px;
En mi opinión actual, un Android DP
generalmente se muestra con el tamaño de un píxel en una pantalla de 160 ppp, mientras que el CSS px
se define como un ángulo visual. Entonces, ¿ px
pasa a ser lo mismo que dp
cuando se ve a cierta distancia? Si es así, ¿es ese un patrón común para usar px
como dp
en CSS, o entendí mal el código CSS?
No sé nada sobre el desarrollo de Android antes, y tampoco un diseñador. Gracias por cualquier ayuda.
em/rem
s en todas partes y luego simplemente escalar el tamaño de fuente base para cada resolución.Respuestas:
Creo que lo aceptado está mal. El css px es en realidad Pixel independiente del dispositivo (dip), y es un patrón común usar px como dp en css.
fuente
Creo que la respuesta completa a su pregunta se puede encontrar aquí:
/programming/2025282/difference-between-px-dp-dip-and-sp-in-android
Para convertir dp a px, debe tener en cuenta las dimensiones de visualización a las que se dirige. Cuanto mayor sea el DPI, más píxeles tendrá que agrupar en la misma área para que se vea bien y evitar la pixelación :
ldpi: 1 dp = 0,75 px
mdpi: 1 dp = 1 px
hdpi: 1 dp = 1,5 px
xhdpi: 1 dp = 2 px
xxhdpi: 1 dp = 3 px
xxxhdpi: 1 dp = 4 px
P.ej:
Un cuadrado de 3x3 dp en CSS o Photoshop debe ser:
2.25x2.25 px - ldpi
3x3 px - mdpi (Samsung ACE, Xperia X8)
6x6 px - xhdpi (Xperia S, Google Nexus 4)
9x9 px - xxhdpi (Samsung S4 - S5, HTC One)
12x12 px - xxxhdpi (esta resolución se utilizará en dispositivos de próxima generación)
Según lo anterior, sus cálculos deberían verse así, utilizando un multiplicador de 3x dp para pantallas XXHDPI:
Android reduce automáticamente las imágenes si encuentra que la resolución del dispositivo utilizado es menor, por lo que es seguro desarrollar con XXHDPI en mente, ya que se dirige a la mayoría de los dispositivos de alta gama actuales en el mercado.
Aquí hay un convertidor simple para hacer el trabajo por usted: http://androidpixels.net/
fuente
W3C dice :
Y aunque dice:
También dice:
Teniendo en cuenta que, por defecto, los dispositivos de pantalla están configurados como 96 ppp, es la mejor suposición sobre cómo los navegadores interpretan un píxel CSS:
Y sabemos que en Android:
Entonces:
Y de acuerdo a eso:
Bueno, pensé que era correcto hasta que revisé los tamaños de Toast de Google Polymer :
Entonces, es una conversión de 1 a 1, y de eso obtuvimos que los navegadores de Android usan:
Y 96 css-px por pulgada se usa en otros dispositivos como computadoras de escritorio y portátiles.
Para concluir: los píxeles css son independientes de los dpi del dispositivo y en los dispositivos Android 1 css-px es igual a 1dp.
fuente
No hay una respuesta correcta, en realidad hay dos:
Nota: idea general: en la parte inferior de la página: escala de imagen con alguna imagen para visualizar las proporciones para umbrales de resolución de pantalla múltiple (imagen de punto de interrupción)
Aquí hay información más detallada para aquellos que quieran profundizar más en el tema, pero es una explicación y lógica detrás, lo anterior es una respuesta completa :
La cuestión es que la "densidad de píxeles", de acuerdo con la guía oficial de Material Design (Diseño> Unidades y medidas), es:
Entonces, básicamente, la densidad de píxeles es un nuevo nombre para un valor de ppi o dado que muchas personas no lo reconocen como algo separado, un valor de dpi.
Definición de 1dp según la misma guía:
El núcleo principal del diseño de materiales es mantener dimensiones físicas consistentes en diferentes plataformas, lo que plantea el problema de la resolución de escritorio, ppi (/ dpi) y el píxel css, en cuyo caso debe seguir calculando el dp como en el caso de Android dispositivos, y no es cierto que la mayoría de las pantallas sean de 96 ppi (es una suposición que es importante para CSS), una gran parte de ellas tiene un ppi un poco más alto, y si se tiene en cuenta no solo el escritorio tradicional sino también las computadoras portátiles normales , o las tabletas, o los "convertibles" como Surface, existe la necesidad de la conversión: generalmente oscilan entre 100 y 130 ppp, lo que dice que la que estoy usando en este momento es 127 ppp:
100% = 160ppi -> físico 1 ancho de píxel = 1dp -> rectángulo 100x100px = 100x100dp
79% = 127ppi -> físico 1 ancho de píxel = ca. 0,8dp -> rectángulo 100x100px = 80x80dp
Aunque dp es una unidad pura y nueva solo para Android, debe hacer algunos cálculos para adaptar los diseños de MD que vienen en dp. Si desea tener una idea más clara de cuán grande será el elemento específico en el sentido físico, lo más útil para el propósito de la pregunta es el valor del rango de tamaño táctil ideal en las pautas de diseño de materiales para dispositivos específicos ** Debajo del valor dp hay uno físico ** El valor dp cambia, pero el físico permanece igual.
El problema, por qué necesita calcular unidades, se explica con más detalle en la guía de la API de Android (Convertir unidades dp en unidades de píxeles) y aún se aplica a los elementos diseñados con CSS:
La conversión de polímero 1: 1 mencionada anteriormente probablemente se deba al hecho de que la densidad de 96 ppp, o incluso la que proporcioné, está en algún lugar de baja densidad o incluso (como en el caso de 96 ppp), incluso por debajo. Teniendo en cuenta que el valor dp no es un CSS aceptado, es más fácil suponer que la relación de densidad (0,75- para baja, 1,0 media, etc.) es la que debe usarse para la simplificación y el tamaño múltiple soporte de pantallas, que se muestra en la tabla de dispositivos para Diseño de materiales mencionado anteriormente. Incluso se menciona como una de las mejores prácticas en el capítulo citado anteriormente de la guía API de Android. Y ahí es donde la conversión de polímero 1: 1 podría ser buena, ya que muchos de los dispositivos tienen la relación de densidad en el nivel 1.
Volviendo al último dilema: el css px, si decides sumergirte en sutiles matices de diferentes dispositivos. Si no es tan inquietante, simplemente manténgase en la relación de densidad de la tabla de MD. Pero si eres un perfeccionista, este quid de la relación de píxeles CSS y dimensiones físicas tiene una explicación perfecta (y bastante simple) en una recomendación de candidato del W3C:
Esta nueva definición de px (teniendo en cuenta las dimensiones físicas) llena el vacío entre los píxeles CSS y dps y nos permite asegurarnos de que mediante cálculos de medición simples, el llamado entorno de salida, que en este caso es consistente (en un sentido físico) ) Diseño MD , permanece igual en diferentes dispositivos y plataformas. Además, las Directrices W3C y MD utilizan las imágenes de dispositivos de baja y alta resolución para ilustrar la idea central de la cobertura de píxeles / puntos: se necesitan más píxeles de dispositivos (puntos) para cubrir un área de 1 px por 1 px en un dispositivo de alta resolución que en una de baja resolución, lo que significa que los ampliamente utilizados en las consultas CSS para la visualización de retina son de hecho lo mismo que debe proporcionar (pero con más umbrales) para Material Design y todos los dispositivos móviles.
Para concluir, use la relación de densidad de MD, que es la mejor práctica recomendada por Google , o si está obsesionado con la precisión o su diseño debe ser absolutamente consistente con los tamaños físicos: use la conversión precisa utilizando valores ppi / dpi de lo específico o común dispositivos (que es bastante loco), lo que puede probar fácilmente en la herramienta en línea de Google Resizer, ya que respetan los umbrales comunes sugeridos en la Guía de MD en primer lugar y las reglas de división para la relación y los nombres de tipo de visualización relevantes (xlarge, medium, etc.) ) implementado en él.
Así que quédese con las proporciones de MD de la tabla recordando que el dp de referencia igual al tamaño de píxel es para la resolución mdpi (160) y será bueno.
fuente