根据设备的屏幕尺寸调用功能(hdpi / ldpi / mdpi)

时间:2012-05-10 14:55:07

标签: android

在mdpi设备上我想称这种方法:

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

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

2 个答案:

答案 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相同。