Android端末の画面サイズ(ピクセル数、解像度)取得

Android端末の特徴は、多様性です。

様々な機能や形を持つ無数のAndroid端末が世界中で発売され、スマートフォンやタブレット、テレビに接続するセットボックスなどとして利用されています。開発者にとって頭が痛いのは、特に「画面サイズの多様性」ですね。

Androidのシステムにも、解像度ごとに画面レイアウトを定義する、画面要素のサイズ指定を解像度も加味した論理ピクセルで指定する、といった機能があるのですが、やはり「実行時にプログラムから画面のピクセル数と解像度を取得したい」こともあるでしょう。

画面のピクセル数や解像度は、DisplayMetricsとして取得することができます。DisplayMetricsは、getDisplayMetrics()で取得できる画面情報オブジェクトです。プロパティに画面サイズに関する各種情報が格納されているので、これを参照して画面上のUIなどを調整しましょう。

画面のピクセル数は、DisplayMetricsのwidthPixelsとheightPixelsに格納されています。これは端末ディスプレイの物理的なピクセル数ですので、画像を画面の半分を占めるように拡大縮小したい、という時などに参照すると良いでしょう。

画面の物理サイズをピクセル数で割った解像度は、xdpiとydpi(1インチあたりのドット数)に格納されています。この値を見れば、1ピクセルが具体的にどれだけの大きさで表示されるかわかるわけですね。

具体的には、画面のピクセル数を取得する処理は、以下のように書きます。

DisplayMetrics metrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);	

int displayWidth = metrics.widthPixels;
int displayHeight = metrics.heightPixels;