【Android】画面サイズ、ビューのサイズを取得する方法


タイトル通りの内容です。

Androidでの開発は本体の画面サイズ(解像度)に気を使わないといけないので面倒くさいですね(´・ω・`)



WindowManagerクラス、Displayクラスを使い画面サイズを取得する


画面のサイズ(解像度)の取得方法です。
WindowManagerのインスタンスを生成、getDefaultDisplayメソッドを使い
Displayクラスのインスタンスを取得して縦サイズ、横サイズを取得できます。
この値はあくまで本体の画面サイズ(解像度)なので、フルスクリーン状態で取得しても値は変わりません。

ほとんど決まりきった書き方なので覚えずにコピペで問題無いですね。

public class Sample20120725Activity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
        Display dp = wm.getDefaultDisplay();
        TextView tv = new TextView(this);
        tv.setText( "画面サイズ 縦:" + dp.getHeight() + "横:" + dp.getWidth() );
        setContentView(tv);
    }
}


【実行結果】
画面サイズ、ビューのサイズを取得する方法サンプル01


Viewのサイズを取得する


Viewのサイズを取得する時はちょっと注意が必要です。

取得するにはViewのインスタンスのgetWidth()、getHeight()を使えばいいのですが、
onCreateの中で取得しても 0 で返ってきてしまいます:(;゙゚'ω゚'):

Viewのサイズを取得したい時はActivity内でonWindowFocusChangedメソッドをオーバーライドしてその中で行いましょう。

public class Sample20120725Activity extends Activity {

    TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        tv = new TextView(this);
        setContentView(tv);
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
    	super.onWindowFocusChanged(hasFocus);
    	tv.setText( "ビューサイズ 縦:" + tv.getHeight()+ "横:" + tv.getWidth() );
    }

}


画面サイズ、ビューのサイズを取得する方法サンプル02

今度は実際にタイトルバーやステータスバー分のサイズが引かれたサイズが取得できました( ^ω^)
…といってもAndroidではピクセルを取得したりすることはあまり無いですかね…



関連記事

コメントは受け付けていません。