2012-05-10 4 views
0

(hdpi/LDPI/MDPI)デバイスの画面サイズに基づいて関数を呼び出します。は、私は、このメソッドを呼び出すしたいと思いますMDPIデバイスで

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

が、私はアプリが上で実行されたときにメソッドを無視したいですhdpiデバイスでは、クラスの画面サイズをどのように決定できますか?

+0

(1)どのような方法 - 私は何も表示されません? (2)既に密度を取得しているので、それが何であるかを確認してください:http://developer.android.com/guide/practices/screens_support.html –

+0

はい私は方法でラップしません。私はちょうど私が知りたいのですが、私は例えばどうすればいいのですか?画面のサイズが320dpならdouble height_px = 45 * scale + 0.5;どのように私はそれを宣言することができますか? – hectichavana

+0

しかし、あなたはすでに画面の密度、画面の高さと画面の幅を持っています - 何が問題なのですか? –

答えて

7

うん単にあなたは、このようにスケール値をチェックすることができ

final float scale = getResources().getDisplayMetrics().density; 

そして今、あなたはスケール値を持っています。スケール値は、スケール値は、1.0ある、MDPIデバイスの場合、このような

を変化させます。

LDPIデバイスの場合、縮尺は0.75です。

HDPIデバイスの場合、スケール値は、1.50あります。

XHDPIデバイスの場合、縮尺値は2.0です。

ただ、このコードは高いためと解像度の上に実行されないことを意味し、クロスチェック、

if(scale <1.50) 
{ 
double height_px = 45 * scale + 0.5; 
} 

を作ります。

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と同じです。

関連する問題