在mdpi设备上我想称这种方法:
final float scale = getResources().getDisplayMetrics().density;
double height_px = 45 * scale + 0.5;
但我想在hdpi设备上运行应用程序时忽略该方法,我如何确定我班级的屏幕尺寸?
答案 0 :(得分:7)
是的,你只需要检查这样的比例值,
final float scale = getResources().getDisplayMetrics().density;
现在你有了规模价值。比例值如下所示,
对于 MDPI 设备,比例值 1.0 。
对于 LDPI 设备,比例值 0.75。
对于 HDPI 设备,比例值 1.50 。
对于 XHDPI 设备,比例值 2.0 。
只需进行交叉检查,
if(scale <1.50)
{
double height_px = 45 * scale + 0.5;
}
这意味着对于高分辨率和高分辨率,不会执行此代码。
答案 1 :(得分:6)
也可以这样做:
int dpiDensity = getResources().getDisplayMetrics().densityDpi;
然后您可以将结果值与DisplayMetrics中的常量进行比较,如下所示:
switch(dpiDensity){
case DisplayMetrics.DENSITY_LOW:
//Do sth for LDPI-screen devices
break;
case DisplayMetrics.DENSITY_MEDIUM:
//Do sth for MDPI-screen devices
break;
case DisplayMetrics.DENSITY_HIGH:
//Do sth for HDPI-screen devices
break;
case DisplayMetrics.DENSITY_XHIGH:
//Do sth for XHDPI-screen devices
break;
}
还有一个名为DENSITY_DEFAULT的常量,但其值与DENSITY_MEDIUM相同。