制作自定义设备配置时,我对于x dpi、y dpi、屏幕宽度、屏幕高度、比例和密度都感到有些困惑。这是我在实际设备配置中找到的唯一信息: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)
根据开发者指南 - ,
制作自定义设备配置时,我对于x dpi、y dpi、屏幕宽度、屏幕高度、比例和密度都感到有些困惑。这是我在实际设备配置中找到的唯一信息: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)
对我来说,这也有点令人困惑。但是在不同的设备上运行这些函数后,我掌握了它,并且现在对我来说一切都很清楚。希望这也能帮助到你。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
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 x 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;