2012-04-10 21 views

Respuesta

7

la esperanza que esto sea útil

Resources r = getResources(); 
float dp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 69, r.getDisplayMetrics()); 
+2

No se le está dando la misma value.I significa el valor de píxel como dip – user1195614

10

Sólo dividir su valor en píxeles por DisplayMetrics.density.

+0

Qué es lo correcto: Dividir o multiplicar como en el ejemplo de @ Khushboo? –

+1

Divide. La fórmula que muestra @Khushboo convierte dp a px. En una pantalla xhdpi, DisplayMetrics.density == 2.0f. Dado que 1 dp == 1 px en una pantalla mdpi y 1 dp == 2 px en una pantalla xhdpi, debe dividir para convertir dp a px, y no al revés. –

7

Puede probar esto:

public int convertDiptoPx(int pixel){ 

    float scale = getResources().getDisplayMetrics().density; 
    int dips=(int) ((pixel * scale) + 0.5f); 
    logMessage("Px=" +pixel+" DipValue="+dips); 
    return dips; 
} 

Editted:

public int convertPxtoDip(int pixel){ 
    float scale = getResources().getDisplayMetrics().density; 
    int dips=(int) ((pixel/scale) + 0.5f); 
    return dips; 
} 
+0

Parece que esto está mal, según @ Romain-Guy –

+0

He editado el código ahora. Erróneamente, publiqué la respuesta de conversión opuesta. – Khushboo

+0

Puede verificar la conversión en este sitio web: - http://labs.skinkers.com/content/android_dp_px_calculator/. – Khushboo

Cuestiones relacionadas