画面サイズを取得する|Android開発

   

Androidで端末のディスプレイサイズを取得する方法です。
一番下に各取得サイズの図解があります。

Display.getSize()

アプリケーションの領域を取得します。
下記はFragmentクラスからの実行時です。(getActivity()Activityクラスを取得しています。)

Point size = new Point();
getActivity().getWindowManager().getDefaultDisplay().getSize(size);
Log.i("MyFragment", "getSize:" + size.x + "x" + size.y);

このサイズはステータスバーアプリケーション領域です。ナビゲーションバーの領域は含みません。
フルスクリーン表示やナビゲーションバー非表示の場合も常に同じ値となります。

Display.getRealSize()

実際のディスプレイサイズを取得します。
下記はFragmentクラスからの実行時です。(getActivity()Activityクラスを取得しています。)

Point size = new Point();
getActivity().getWindowManager().getDefaultDisplay().getRealSize(size);
Log.i("MyFragment", "getRealSize:" + size.x + "x" + size.y);

このサイズは常に同じ値となります。

ViewSize

レイアウトやビューのサイズを取得します。
ActivityonWindowFocusChanged()以降でコールしないと正しい値が取得できません。
Fragmentの場合は取得タイミングを調整する必要があります。Cameraプレビューの場合は、SurfaceHolder.Callback.surfaceChanged()などで取得可能です。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    View view = findViewById(R.id.camera_v1_root);
    Log.i("MyActivity", "ViewSize:" + view.getWidth() + "x" + view.getHeight());
}

このサイズは、ステータスバーナビゲーションバータイトルバーの表示・非表示でサイズが変わります

図解

display領域

 - Android