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;
実際のデバイス画面の高さと幅を取得する標準的な方法はありますか?