【发布时间】:2014-03-27 04:32:43
【问题描述】:
如何获取屏幕宽度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?
但事实并非如此....widthdpi 小于 320 我认为...因为 320 在屏幕上对我来说是错误的....使用 120 可以工作。
在 Nexus 4 上...宽度为 768,密度 dpi 为 320...我除以 768/2,得到 384 正确的宽度密度 dpi(有效)
但是在 240、160、120 密度 dpi 等其他设备上……宽度 dpi 的计算似乎是错误的……
【问题讨论】:
-
我补充一点。例如在上述情况下...如果我做 layout_margin 20 dp...并且我从 320 中减去 40...我应该得到 280...但我得到 240 之类的东西...所以 widthdpi 计算错误
-
对于大多数应用程序,没有理由计算这些值,假设您一直在编写布局并使用 dp 值(无论设备具有何种密度显示,它都会自动正确缩放)。