在从图形布局设计视图进行自定义设备配置时,我对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)
根据开发者指南 -
答案 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;