1

我正在努力在我的 Android 应用程序中支持多种屏幕尺寸,我需要知道设备的物理屏幕尺寸。

在索尼爱立信 X10 上,我正在查询物理屏幕分辨率和密度,并尝试计算屏幕尺寸(分辨率/密度 = 尺寸),但结果大约是实际尺寸的 1.5 倍!

这是代码:

    DisplayMetrics metrics = c.getResources().getDisplayMetrics();
    mPhysicalScreenWidth  = metrics.widthPixels  / metrics.xdpi;
    mPhysicalScreenHeight = metrics.heightPixels / metrics.ydpi;
    Log.d(TAG, "DisplayMetrics: widthPixels=" + metrics.widthPixels + " xdpi=" + metrics.xdpi +
            " heightPixels=" + metrics.heightPixels + " ydpi=" + metrics.ydpi);
    Log.d(TAG, "Physical screen width=" + mPhysicalScreenWidth + "\", height=" + mPhysicalScreenHeight + "\"");

日志中的输出:

DisplayMetrics: widthPixels=480 xdpi=160.41878 heightPixels=854 ydpi=159.49677
Physical screen width=2.9921684", height=5.3543406"

这个实际尺寸只有 2 英寸(宽)x 3.5 英寸(高)!?

难道我做错了什么?

我正在使用 Android 1.6 SDK,并且已将清单中的所有 <supports-screens> 属性设置为 true。

4

2 回答 2

2

我能想到的唯一解释是设备的 dpi 值不正确(对我来说听起来像是虚假广告编辑:虚假广告让它们看起来更糟?)。屏幕尺寸为 4.0 英寸,分辨率为 160 dpi。您拥有的像素值是正确的,这意味着您拥有的英寸大小是正确计算的。我在网上找到的所有价值观(维基百科gsmarena)都说了同样的话。

但是屏幕尺寸实际上是4.0英寸...

sqrt ( 5.35^2 + 3.0^2) = 6.14 英寸宽,比实际大得多。

这听起来像 dpi 值一定不正确。它们实际上必须大一点。插入几个值后,实际的 dpi 必须在 240 左右。我不确定为什么这些值会在任何地方都被错误地列出......

编辑:在对此进行了更多研究之后,据报道 xperia x10 对于 x 和 y 的 dpi 均为 245。

于 2011-01-31T20:38:51.467 回答
1

我知道这是一个老问题,但错误仍然存​​在。在(某些)Sony 设备上使用 Display Metrics 时,您需要执行以下操作:

metrics.setToDefaults();
于 2014-03-28T10:07:12.690 回答