units online android width pixels units-of-measurement dip

android - online - ¿SetWidth(int pixeles) usa dip o px?



units android (5)

La forma correcta de obtener un número constante de DIP en el código es crear un archivo XML de recursos que contenga valores dp un poco como:

<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="image_width">100dp</dimen> <dimen name="image_height">75dp</dimen> </resources>

Luego, consulte el recurso en su código de esta manera:

float width = getResources().getDimension(R.dimen.image_width)); float height = getResources().getDimension(R.dimen.image_height));

El flotador que ha devuelto se escalará según la densidad de píxeles del dispositivo y, por lo tanto, no es necesario que siga replicando un método de conversión en su aplicación.

¿SetWidth (int pixeles) usa el píxel independiente del dispositivo o el píxel físico como unidad? Por ejemplo, ¿setWidth (100) establece el ancho de una vista a 100 inmersiones o 100 px?

Gracias.


Método setWidth (100), establezca 100 px como ancho (no en dp) .Por lo tanto, puede enfrentar problemas de ancho variable en diferentes teléfonos Android.Así use la medición en dp en lugar de píxeles.Utilice el código siguiente para obtener la medición en dp de ancho de muestra = 300px y altura = 400px.

int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics()); int Height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());


Píxeles, por supuesto, el método es pedir píxeles como parámetro.


Utiliza píxeles, pero estoy seguro de que te preguntas cómo usar salsas en su lugar. La respuesta está en TypedValue.applyDimension() . Aquí hay un ejemplo de cómo convertir inmersiones a px en el código:

// Converts 14 dip into its equivalent px Resources r = getResources(); int px = Math.round(TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));


float dps = 100; float pxs = dps * getResources().getDisplayMetrics().density;

Fuente (@Romain Guy)