画面サイズを取得する|Android開発
Androidで端末のディスプレイサイズを取得する方法です。
一番下に各取得サイズの図解があります。
Display.getSize()
アプリケーションの領域を取得します。
下記はフラグメントクラスからの実行時です。(getActivity()
でアクティビティクラスを取得しています。)
Point size = new Point();
getActivity().getWindowManager().getDefaultDisplay().getSize(size);
Log.i("MyFragment", "getSize:" + size.x + "x" + size.y);
このサイズはステータスバーとアプリケーション領域です。ナビゲーションバーの領域は含みません。
フルスクリーン表示やナビゲーションバー非表示の場合も常に同じ値となります。
Display.getRealSize()
実際のディスプレイサイズを取得します。
下記はフラグメントクラスからの実行時です。(getActivity()
でアクティビティクラスを取得しています。)
Point size = new Point();
getActivity().getWindowManager().getDefaultDisplay().getRealSize(size);
Log.i("MyFragment", "getRealSize:" + size.x + "x" + size.y);
このサイズは常に同じ値となります。
ViewSize
レイアウトやビューのサイズを取得します。
アクティビティのonWindowFocusChanged()
以降でコールしないと正しい値が取得できません。
フラグメントの場合は取得タイミングを調整する必要があります。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());
}
このサイズは、ステータスバー、ナビゲーションバー、タイトルバーの表示・非表示でサイズが変わります。