2012-04-10 119 views

回答

7

希望这将有助于

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

没有被给予同样的value.I平均像素为浸 – user1195614 2012-04-10 18:43:54

10

只需通过DisplayMetrics.density划分像素你的价值。

+0

的值,它是正确的:分或者像@ Khushboo的例子那样繁殖? – 2012-11-26 21:21:14

+1

鸿沟。 @Khushboo显示的公式将dp转换为px。在xhdpi显示器上,DisplayMetrics.density == 2.0f。由于1dp == 1px在mdpi显示器上,1dp == 2px在xhdpi显示器上,所以需要分割以将dp转换为px,而不是相反。 – 2012-11-27 02:12:30

7

你可以试试这个:

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

似乎这是错误的,根据@ Romain-Guy – 2012-11-27 15:29:04

+0

我已经编辑了代码。我错误地发布了相反转换的答案。 – Khushboo 2013-01-24 11:36:04

+0

您可以在此网站查看转换: - http://labs.skinkers.com/content/android_dp_px_calculator/。 – Khushboo 2013-01-24 11:37:31