0

我正在努力让设备显示对角线长度。我使用了公式,对角线 = 宽度 * 宽度 + 高度 * 高度。为了实现这一点,我使用下面的代码。

    DisplayInfo aDisplayInfo = new DisplayInfo();
    DecimalFormat twoDecimalForm = new DecimalFormat("#.##");

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    aDisplayInfo.widthInch = (dm.widthPixels * dm.density) / (dm.xdpi * 2);
    aDisplayInfo.heightInch = ((dm.heightPixels * dm.density) / (dm.ydpi * 2));
    aDisplayInfo.widthPix = dm.widthPixels;
    aDisplayInfo.heightPix = dm.heightPixels;

    // approaach 1
    aDisplayInfo.diagonalInch = twoDecimalForm.format(Math.sqrt(Math.pow(
            aDisplayInfo.widthInch, 2)
            + Math.pow(aDisplayInfo.heightInch, 2)));

运行此代码后,我在不同的设备中发现了不同的结果。喜欢:

  • 三星 Galaxy S3 = 4.8 英寸(正确)
  • HTC One X = 6.8 英寸(错误)[将是 4.7 英寸]

这段代码有什么问题?任何形式的帮助将不胜感激。

4

1 回答 1

0

尝试这个:

aDisplayInfo.widthInch = dm.widthPixels / dm.xdpi;
aDisplayInfo.heightInch = dm.heightPixels / dm.ydpi;

widthPixels/heightPixels应该是物理像素数。xdpi/ydpi应该是每英寸的像素数。您不需要对这些值进行任何缩放。

于 2013-10-03T07:26:04.197 回答