3

在从图形布局设计视图进行自定义设备配置时,我对 x dpi、y dpi、屏幕宽度和屏幕高度、比率和密度感到有些困惑。这是我为我的 REAL 设备配置找到的唯一东西 - 240 x 320 像素,2.8 英寸(~143 ppi 像素密度)。我如何获得以下信息。对于我的自定义设备配置 -

x dpi= ?
y dpi = ?
screen width=240
screen height=320
ratios=?
density=?
screen size=2.8 inch (diagonal)

根据开发者指南- 在此处输入图像描述

4

1 回答 1

2

这对我来说也有点困惑。但是在不同的设备上运行这些功能,我掌握了它,现在一切都清楚了。希望这对你也有帮助。

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

    int height = metrics.heightPixels;
    int width = metrics.widthPixels;

//注意:以上公式为您提供值:对于三星 Galaxy sIII:720 * 1280 对于三星 4g LTE 平板电脑:800 x 1232

因此,您会想知道这两种设备的高度几乎相同。但这不是它的工作方式。您必须使用下面的函数“convertPixelsToDp”来获得实际的 dp。

      public static float convertPixelsToDp(float px,Context context)
     {
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float dp = px / (metrics.densityDpi / 160f);
        return dp;

     }

因此,使用此公式后,它将为您提供三星 Galaxy sIII 的 360*640。

 //To convert dp back to pixel
 public static float convertDpToPixel(float dp,Context context){
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float px = dp * (metrics.densityDpi/160f);
        return px;
    }


    //This will give you ratio
    // For Samsung Galaxy sIII : ratio is 2 (320/160)
    float d = getApplicationContext().getResources().getDisplayMetrics().density;


    // will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH
    //For Samsung Galaxy sIII : 320 dpi
    int dpiClassification = metrics.densityDpi;
于 2012-10-19T21:16:21.623 回答