2012-04-10 4 views

Répondre

7

espère que ce sera utile

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

Non, ce donne la même value.I signifie la valeur de pixel Dip – user1195614

10

Il suffit de diviser votre valeur en pixels par DisplayMetrics.density.

+0

Ce qui est correct: diviser ou multiplier comme dans l'exemple de @ Khushboo? –

+1

Diviser. La formule affichée par @Kushushbo convertit dp en px. Sur un affichage xhdpi, DisplayMetrics.density == 2.0f. Depuis 1 dp == 1 px sur un affichage mdpi et 1 dp == 2 px sur un affichage xhdpi, vous devez diviser pour convertir dp en px, et non l'inverse. –

7

Vous pouvez essayer ceci:

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

Il semble que ce soit faux, selon @ Romain-Guy –

+0

J'ai maintenant édité le code. Par erreur, j'ai posté la réponse de la conversion inverse. – Khushboo

+0

Vous pouvez vérifier la conversion sur ce site: - http://labs.skinkers.com/content/android_dp_px_calculator/. – Khushboo

Questions connexes