0

在 mdpi 设备上,我想调用这个方法:

final float scale = getResources().getDisplayMetrics().density;
double height_px =  45 * scale + 0.5;

但是当应用程序在 hdpi 设备上运行时我想忽略该方法,我如何确定班级的屏幕尺寸?

4

2 回答 2

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

这意味着此代码不会在高分辨率及以上分辨率下执行。

于 2012-05-23T08:22:31.883 回答
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 相同。

于 2012-05-30T09:08:03.660 回答