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;
、ステータスバットの高さを計算するためにいくつかのメソッドを使用しますが、適切な値を取得していないが、実際のデバイスの画面の高さと幅を取得する任意の標準的な方法はありますか?
をお試しください高さ - プログラム的に/ –