タイトル通りの内容です。
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); } }
【実行結果】
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() ); } }
今度は実際にタイトルバーやステータスバー分のサイズが引かれたサイズが取得できました( ^ω^)
…といってもAndroidではピクセルを取得したりすることはあまり無いですかね…