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

次のように sth を実行することもできます。

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 に答える