x dpi与屏幕宽度,比率等之间的差异

时间:2012-10-19 07:50:54

标签: android

在从图形布局设计视图进行自定义设备配置时,我对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)

根据开发者指南 - enter image description here

1 个答案:

答案 0 :(得分:2)

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

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

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

//注意:上面的公式为您提供了值: 三星Galaxy sIII:720 * 1280 对于三星4g LTE平板电脑:800乘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;

     }

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

 //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;