如何获得屏幕宽度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的计算似乎是错误的…
解决方法
每
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