2012-11-19 12 views
5

4.2で動作しているNexus 7の実際の画面の幅と高さを取得しようとしています。デバイスの生の幅と高さまたは実際の画面の幅と高さを取得する方法は?

私はデバイスの幅と高さに基づいていくつかのランタイム計算を行って、ボタンといくつかのUI要素のサイズを変更するので、すべてのデバイスで適切に見えます。私のコードは、すべてのSDK 4.1およびそれ以下ではうまくいきましたが、4.2では動作しませんでした。

次のコードを使用して幅と高さを取得しています。

コード:1

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
mWidth = displaymetrics.widthPixels; 
mHeight = displaymetrics.heightPixels; 

コード:2

Point size = new Point(); 
WindowManager w = getWindowManager(); 
w.getDefaultDisplay().getSize(size); 
mWidth = size.x; 
mHeight = size.y; 

Iはまた、文書化されていない方法で

コード試みた:3

Display display = getWindowManager().getDefaultDisplay(); 
Method mGetRawW = Display.class.getMethod("getRawWidth"); 
Method mGetRawH = Display.class.getMethod("getRawHeight"); 
mWidth = (Integer) mGetRawW.invoke(display); 
mHeight = (Integer) mGetRawH.invoke(display); 

をしかし、上記のいずれでもありませんNexus 7 runniで作業する4.2で、常にステータスバーの高さを引いて、私は完全な高さを得ていません。

私は

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density); 

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 

、ステータスバットの高さを計算するためにいくつかのメソッドを使用しますが、適切な値を取得していないが、実際のデバイスの画面の高さと幅を取得する任意の標準的な方法はありますか?

答えて

1

はそれをAPI 17の最後の変更を試してみて:

http://developer.android.com/reference/android/view/Display.html#getRealSize(android.graphics.Point

ます。public void getRealSize(ポイント特大)
は、任意のウィンドウを減算することなく、ディスプレイの実際のサイズを取得します。どのような互換性のあるスケールファクタを使用しても構いません。

このdoes'nt作業する場合は、試すことができます:

http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics

+0

をお試しください高さ - プログラム的に/ –

0
int height = getResources().getDisplayMetrics().heightPixels; 
int width = getResources().getDisplayMetrics().widthPixels; 

高さはピクセル単位で、デバイスの画面の高さを表し、 幅をピクセル単位で、デバイスの画面の幅を表します。

0

このデモのソースコードは、あなたがhttp://whats-online.info/science-and-tutorials/121/android-get-screen-width-好きなものを達成するのに役立ちます参照してください。この

int width = 0; 
int height =0; 

    Display display = activity.getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT >= 13) { 
     Point size = new Point(); 
     display.getSize(size); 
     width = size.x; 
     height = size.y; 
    } else { 
     width = display.getWidth(); 
     height = display.getHeight(); 
    }