2011-01-16 18 views
6

estoy confundido por inmersiones en Android.conceptos básicos de píxeles independientes del dispositivo

Entiendo por la referencia que la base para los valores de dp es 160. Entonces, ¿no debería el ancho de 80dp igualar una vista con un ancho del 50% de la pantalla? En mi Nexus One, el ancho en dp es algo alrededor de 300dp, como parece.

¿Qué es lo que falta aquí?

THX de antemano

Respuesta

5

160 puntos por pulgada . Entonces 80dp sería 1/2 pulgada, más o menos.

+0

OP pregunta por inmersión, no por dpi. – Ying

+0

Están relacionados. Mencionó que 160 es el valor base, ese valor es la densidad en DPI. – kcoppock

+0

tiene razón; no leí esta respuesta detenidamente. – Ying

16

"DP" == "píxeles independientes de la densidad" (Esta es la razón por la que fue anteriormente llamado "dip", aunque yo prefiero usar "DP" en estos días.)

Piense en ello como otras unidades - "in" (pulgadas), "mm" (milímetros), etc. Le permite proporcionar un tamaño que se escala en función de la densidad de la pantalla.

Definimos mdpi como la densidad base, por lo que "10dp" en una pantalla mdpi dará como resultado exactamente 10 píxeles. En una pantalla hdpi resultará en 15 píxeles, porque hdpi es 1.5 * mdpi.

Tenga en cuenta que aunque las constantes para varias densidades son similares a DPI (mdpi es 160, etc.), la densidad es no exactamente DPI. Es un factor de escala abstracto que se ajusta a los ppp de la pantalla, pero no intenta reflejarlo exactamente. (Utilizaría "in", "mm", etc. para tamaños exactos pero 99.9% que no es lo que quiere, así que quédese con "dp"). Esto simplifica enormemente la vida de todos, ya que no necesita lidiar con muchos Android dispositivos que tienen una cantidad ligeramente diferente de espacio para su UI porque cada uno de los diferentes DPI de pantalla diferente. Además, los fabricantes de dispositivos pueden seleccionar la densidad de su dispositivo para lograr una IU deseada; por ejemplo, la pestaña Samsung utiliza una densidad que es una cantidad bastante mayor que el ppp real, lo que resulta en una interfaz de usuario más grande en general.

+4

"Esto simplifica enormemente la vida para todos", excepto que no es así. Hace la vida más difícil para todos, porque las inmersiones no funcionan (son muy diferentes en muchas piezas de hardware ahora que son inútiles). Google todavía dice usar dip para toda la interfaz de usuario, pero eso es imposible ya que causa que los almentos estén completamente mal en el 30% de todos los teléfonos (vine aquí en busca de una solución, decepcionado de no encontrar ninguno). – Adam

0

Los píxeles independientes de la densidad (abreviado: dp) son una unidad virtual de píxeles que se determinará en el tiempo de ejecución de su aplicación.

Formala: 1 dp = 1 Pixel en la pantalla de 160 ppp. Así que 160 ppp es la densidad base para el sistema.

La conversión de unidades dp a píxeles de pantalla es bastante simple. píxeles de dispositivo real (px) = dp (1) * (dpi (del dispositivo)/160 (línea de base)) En aras de la simplicidad: px = dp * (dpi/160)

Ejemplo: Si un dispositivo de 240 dpi inicia su aplicación, luego 1 dp equivale a 1,5 píxeles reales del dispositivo.

Conclusión: Dp maneja automáticamente cualquier escala en dispositivos más grandes o más pequeños. Los tiempos en que codificas los píxeles han terminado. DP asegura la escala adecuada en diferentes densidades de pantalla.

Cuestiones relacionadas