在 mdpi 设备上,我想调用这个方法:
final float scale = getResources().getDisplayMetrics().density;
double height_px = 45 * scale + 0.5;
但是当应用程序在 hdpi 设备上运行时我想忽略该方法,我如何确定班级的屏幕尺寸?
在 mdpi 设备上,我想调用这个方法:
final float scale = getResources().getDisplayMetrics().density;
double height_px = 45 * scale + 0.5;
但是当应用程序在 hdpi 设备上运行时我想忽略该方法,我如何确定班级的屏幕尺寸?
是的,你可以像这样检查比例值,
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;
}
这意味着此代码不会在高分辨率及以上分辨率下执行。
也可以这样做:
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 相同。