¿Cuál es la diferencia entre las unidades de medida de Android?
De la Documentación para desarrolladores de Android:
px Píxeles - corresponde a los píxeles reales de la pantalla.
in Inches - se basa en el tamaño físico de la pantalla.
1 pulgada = 2,54 centímetros
mm Milímetros - basado en el tamaño físico de la pantalla.
pt Puntos - 1/72 de pulgada basado en el tamaño físico de la pantalla.
dp 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 dpi, por lo que un dp es un píxel en una pantalla de 160 dpi. La relación de dp a píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. Nota: El compilador acepta tanto "dip" como "dp", aunque "dp" es más consistente con "sp".
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 la fuente del usuario. Se recomienda utilizar esta unidad al especificar el tamaño de las fuentes, para que se ajusten para la densidad de la pantalla y la preferencia del usuario.
De Understanding Density Independence In Android:
+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size |
+----------------+----------------+---------------+-------------------------------+
| ldpi | 120 dpi | 0.5 x 0.5 in | 0.5 in * 120 dpi = 60x60 px |
+----------------+----------------+---------------+-------------------------------+
| mdpi | 160 dpi | 0.5 x 0.5 in | 0.5 in * 160 dpi = 80x80 px |
+----------------+----------------+---------------+-------------------------------+
| hdpi | 240 dpi | 0.5 x 0.5 in | 0.5 in * 240 dpi = 120x120 px |
+----------------+----------------+---------------+-------------------------------+
| xhdpi | 320 dpi | 0.5 x 0.5 in | 0.5 in * 320 dpi = 160x160 px |
+----------------+----------------+---------------+-------------------------------+
| xxhdpi | 480 dpi | 0.5 x 0.5 in | 0.5 in * 480 dpi = 240x240 px |
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi | 640 dpi | 0.5 x 0.5 in | 0.5 in * 640 dpi = 320x320 px |
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit | Description | Units Per | Density | Same Physical Size |
| | | Physical Inch | Independent | On Every Screen |
+---------+-------------+---------------+-------------+--------------------+
| px | Pixels | Varies | No | No |
+---------+-------------+---------------+-------------+--------------------+
| in | Inches | 1 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| mm | Millimeters | 25.4 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| pt | Points | 72 | Yes | Yes |
+---------+-------------+---------------+-------------+--------------------+
| dp | Density | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
| sp | Scale | ~160 | Yes | No |
| | Independent | | | |
| | Pixels | | | |
+---------+-------------+---------------+-------------+--------------------+
También se puede encontrar más información en la Documentación de diseño de Google.
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 la pantalla
Tamaño físico real, medido como la diagonal de la pantalla. Para simplificar, Android agrupa todos los tamaños reales de pantalla en cuatro tamaños generalizados: pequeño, normal, grande y extragrande.Densidad de la pantalla
El número de píxeles dentro de un área física de la pantalla; suele denominarse ppp (puntos por pulgada). Por ejemplo, una pantalla de una pantalla de "baja" densidad 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 densidad: baja, media, alta, extra-alta, extra-extra-alta y extra-extra-alta. extra-extra-extra-alta.Orientación
La orientación de la pantalla desde el punto de vista del usuario. punto de vista del usuario. Puede ser horizontal o vertical, lo que significa que la relación de aspecto de la pantalla es ancha o alta. relación de aspecto de la pantalla es ancha o alta, respectivamente. Tenga en cuenta que no diferentes dispositivos operan en diferentes orientaciones por por defecto, sino que la orientación puede cambiar en tiempo de ejecución cuando el usuario Cuando el usuario gira el dispositivo.
Resolución
El número total de píxeles físicos en una pantalla. Al añadir soporte para múltiples pantallas, las aplicaciones no trabajan directamente con la resolución. no trabajan directamente con la resolución; las aplicaciones deben preocuparse sólo con el tamaño y la densidad de la pantalla, como se especifica en los grupos de grupos de tamaño y densidad.
Píxel independiente de la densidad (dp)
Una unidad virtual de unidad de píxel virtual que debe utilizar al definir el diseño de la interfaz de usuario, para expresar las dimensiones del diseño o la posición en una densidad. dimensiones del diseño o la posición de una manera independiente de la densidad. El píxel independiente de la densidad equivale a un píxel físico en una pantalla de 160 160 dpi, que es la densidad base asumida por el sistema para una pantalla de densidad "media". En tiempo de ejecución, el sistema maneja de forma transparente en tiempo de ejecución, el sistema maneja de forma transparente cualquier escala de las unidades dp, según sea necesario, basándose en la densidad real de la pantalla en uso. de la pantalla en uso. La conversión de unidades dp a píxeles de pantalla es sencilla:px = dp * (dpi / 160)
. Por ejemplo, en una pantalla de 240 ppp, 1 dp equivale a 1,5 píxeles físicos. Siempre debes usar unidades dp cuando definir la interfaz de usuario de su aplicación, para asegurar la correcta visualización de su interfaz de usuario en pantallas con diferentes densidades.
Si te tomas en serio el desarrollo de una aplicación Android para más de un tipo de dispositivo, deberías haber leído el documento de desarrollo de soporte de pantallas al menos una vez. Además de eso, siempre es bueno conocer el número real de dispositivos activos que tienen una configuración de pantalla particular.
Voy a elaborar más sobre cómo se convierte exactamente dp a px:
150 x 150 px
ocupará 150 * 150 dp
de espacio en pantalla.150 x 150 px
ocupará 100 * 100 dp
de espacio en pantalla.150x150 px
ocupará 75 * 75 dp
de espacio en pantalla.Al revés: digamos que quieres añadir una imagen a tu aplicación y necesitas que ocupe un control de 100 * 100 dp
. Tendrás que crear imágenes de diferente tamaño para los tamaños de pantalla soportados:
100 * 100 px
para mdpi150 * 150 px
para hdpi