5

4.2 で実行されている Nexus 7 の実際の画面の幅と高さを取得しようとしています。

ボタンといくつかの UI 要素のサイズを変更するために、デバイスの幅と高さに基づいて実行時の計算を行っているため、すべてのデバイスで適切に表示されます。私のコードは、4.1 以下のすべての SDK で問題なく動作していましたが、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;

文書化されていない方法も試しました

コード: 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);

しかし、上記のいずれも 4.2 で実行されている Nexus 7 では動作せず、常にステータス バーの高さが差し引かれます。高さが完全に得られません。

ステータスバットの高さを計算するためにいくつかの方法を使用しましたが、適切な値が得られませんでした.

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

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

実際のデバイス画面の高さと幅を取得する標準的な方法はありますか?

4

3 に答える 3

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

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

于 2015-11-28T09:08:18.947 に答える
1

API 17 の最後の変更を試してみてください。

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

public void getRealSize (Point outSize)
ウィンドウの装飾を差し引いたり、互換性倍率を適用したりせずに、ディスプレイの実際のサイズを取得します。

これが機能しない場合は、次のことを試してください。

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

于 2012-11-19T15:04:51.707 に答える
0

これを試して

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();
    }
于 2015-11-28T11:55:06.040 に答える