如何在ANDROID中获得屏幕宽度dpi?

时间:2014-02-25 06:06:32

标签: android width screen

如何获得屏幕宽度dpi?

DisplayMetrics metrics = getResources().getDisplayMetrics();
int f = metrics.densityDpi;


  //  getWindowManager().getDefaultDisplay().getMetrics(metrics);

int width = metrics.widthPixels;
int dp = (int)(width / (metrics.density));

我这样做,所以假设我的densitydpi是120 ..和widthpixel 240 .. 通过计算得到240 / 0.75 ....所以我有320宽度?

然而情况并非如此......我认为widthdpi小于320 ...因为320在屏幕上错误地使用了我...使用了120个作品。

在Nexus 4上......宽度为768,密度为320 ......我除以768/2,得到384正确的宽度密度dpi(可行)

但是在其他像240,160,120密度dpi ...... widthdpi的计算似乎错了......

1 个答案:

答案 0 :(得分:13)

根据Supporting Multiple Screens guide's definition of DP

px = dp * (dpi / 160)

因此

dp = px / (dpi / 160)

或等效

dp = px * 160 / dpi

请记住,dp代表“与密度无关的像素” - 即1dp在ldpi设备上与在xxhdpi设备上的物理尺寸相同。因此,您应该期望所有手机的宽度大约为300-400dp,请注意dp的铲斗尺寸:

  • xlarge屏幕至少为960dp x 720dp
  • 大屏幕至少为640dp x 480dp
  • 正常屏幕至少为470dp x 320dp
  • 小屏幕至少为426dp x 320dp