在各种Android设备中显示对角线大小冲突

时间:2013-10-03 06:54:53

标签: android screen

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

    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英寸]

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

1 个答案:

答案 0 :(得分:0)

试试这个:

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

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