2012-04-10 11 views

cevap

7

Umut bu

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

yok aynı value.I doğru dip – user1195614

10

Sadece DisplayMetrics.density tarafından piksel değerinizi bölmek yararlı olacaktır.

+0

olarak pikselin ortalama değer veriyor: bölünmeden veya Khushboo'nun örneğinde olduğu gibi çarpmak için? –

+1

Divide. @Khushboo tarafından gösterilen formül, dp'yi px'e dönüştürür. Bir xhdpi ekranında, DisplayMetrics.density == 2.0f. Bir mdpi ekranda 1 dp == 1 px ve bir xhdpi ekranda 1 dp == 2 px olduğundan, dp'yi px'e dönüştürmek için bölmeniz gerekir, diğer yoldan değil. –

7

Bu deneyebilirsiniz:

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

Bunun yanlış olduğunu görünce, @ Romain-Guy'a göre –

+0

Şimdi kodu değiştirdim. Yanlışlıkla, karşıt dönüşümün cevabını yayınladım. – Khushboo

+0

Dönüştürmeyi bu web sitesinde kontrol edebilirsiniz: - http://labs.skinkers.com/content/android_dp_px_calculator/. – Khushboo

İlgili konular