Android:如何计算dp?

时间:2013-07-09 18:52:38

标签: android layout size dpi

我知道有关于这个问题的N个主题,但我仍然不知道如何在Android上为小部件(按钮,图像)应用宽度和高度。

我读过这个:http://developer.android.com/guide/practices/screens_support.html 和许多其他线程,但我不明白。

我应该如何为按钮计算dpi?

我需要知道设备的dpi吗? (维基百科列表): http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density

但是还有很多其他设备具有不同的dpi!

我在photoshop(800x480)中设计了一个按钮(290x65)。我已经在我的android项目中保存并导入了新创建的'drawable'文件夹中的图像按钮。在XML(布局)中,我使用导入的按钮图像插入了ImageView。

<ImageView
   android:id="@+id/btnNewImage"
   android:layout_width="210dp"
   android:layout_height="50dp"
   android:layout_marginLeft="10dp"
   android:layout_marginTop="7dp"
   android:src="@drawable/new_image" />

插入的图像完全不同,它更大。我该如何计算Android尺寸的确切宽度和高度值?

2 个答案:

答案 0 :(得分:1)

如果您需要知道设备的dpi,请使用以下代码段:

 int dpi = getResources().getDisplayMetrics().densityDpi;

如果您想从dp转换为像素:

 int px = (int)(dp * getResources().getDisplayMetrics().density + 0.5f);

如果要将像素转换为dp:

 int dp = (int)(px / getResources().getDisplayMetrics().density + 0.5f);

答案 1 :(得分:1)

要使图像显示为正确的大小,您需要将其放在正确的“可绘制”文件夹中。例如,如果您有一个48x48像素的图标,则应该使用drawable-mdpi。理想情况下,您应该为每个文件夹创建图形,以便Android可以根据屏幕大小和分辨率选择最佳的图形。

我正在为我的图标使用以下指南(我从现在忘记的地方收集了这些指示);你可以根据这些来推断出你需要的像素尺寸:

Recommended drawable sizes - to match size of launcher icon, about 3/8"
36x36 - low
48x48 - med
72x72 - high
96x96 - extra high