【发布时间】:2012-01-29 14:08:04
【问题描述】:
谁能告诉我Android是如何计算屏幕密度的?
我的问题是我的设备(ODYS Space)分辨率为 480x800,屏幕对角线为 7 英寸。 如果我计算它的密度,我会得到一个 133 DPI 的值,但 Android(2.2 和 2.3 也一样)将它报告为“中等”密度设备(160 DPI)。
我正在与多屏支持作斗争,所以我认为 133 DPI 会被报告为“低”而不是“中”,所以现在我的屏幕布局在这个中等报告的设备上看起来很愚蠢。
我用这样的代码检查设备:
DisplayMetrics dMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dMetrics);
int d=dMetrics.densityDpi;
如果我在配置的虚拟设备(480x800/7" 和 133 DPI)上运行该代码,那么我得到的密度=120。
为什么在真机上显示的是 160?
【问题讨论】:
-
如果您正在寻找赏金,请参阅 Peter O. 的回答和我在其下方的评论。这里的重点是 Android 如何实际计算密度,而不是如何检索设置。例如,LDPI 和 MDPI、MDPI 和 HDPI 之间的分界线在哪里……为什么给定的数字会舍入到较高的密度而不是较低的相邻密度,等等。同样,在 AVD 设备编辑器中可以看到答案的提示,但到目前为止,我还没有找到确定性、确定性、正确的答案。
-
DPI - 设备独立像素 您不能有自定义值,因为有标准 0.75 - ldpi - 120 dpi 1.0 - mdpi - 160 dpi 1.5 - hdpi - 240 dpi 2.0 - xhdpi - 320 dpi 3.0 - xxhdpi - 480 dpi 4.0 - xxxhdpi - 640 dpi