He descubierto que es posible establecer las dimensiones de mis elementos de la interfaz en diseños XML utilizando DIP como en el siguiente fragmento:¿Cuál es la forma correcta de especificar dimensiones en DIP a partir del código de Java?
android:layout_width="10dip"
Pero todo interfaz Java toma de enteros como argumentos y no hay manera de especificar las dimensiones en los baños . ¿Cuál es la forma correcta de calcular esto?
Pensé que tenía que usar la densidad de la propiedad de la clase DisplayMetrics
, pero ¿es esta la manera correcta?
¿Puedo confiar en que esta fórmula siempre es correcta?
píxeles * DisplayMetrics.density = dip
¿Hay una función de utilidad para la conversión en algún lugar de Android?
Gracias Roman, de alguna manera pasé por alto esta parte. Hay dos preguntas adicionales relacionadas con el tema: - ¿La densidad será siempre igual para ambas dimensiones? Parece que sí (ya que este es solo un valor), pero tal vez haya alguna otra fórmula para calcular esto. - ¿hay alguna API para hacer la conversión por mí? ¿Realmente tengo que escribir lo siguiente recortado en mi código?En el código de diseño XML, es posible especificar "dip" como unidad, ¿por qué no es posible en la API de Java? –
Creo que puede suponer con seguridad que la densidad es igual en ambas dimensiones. Recuerde, DisplayMetrics.density es la ** densidad lógica **, no la densidad de pantalla real (que puede variar ligeramente de la densidad lógica). Con respecto a una API de conversión, es trivial escribir un método auxiliar como, por ejemplo, 'Util.dip' que convierte los dip's a píxeles para usarlos en llamadas a funciones. Es más limpio manejar unidades en Java de esa manera de todos modos. –