Androidプログラマへの道 〜 Moonlight 明日香 〜 - 画面サイズを取得する
端末の画面サイズを取得するには, Displayクラスを使用する.
注) 取得できる画面サイズは, タイトルバー及びステータスバーを含んだものである.

Activity継承クラスの場合

  • DisplaySize.java
    • getSystemServiceメソッドで, WINDOW_SERVICEを指定してWindowManagerのインスタンスを取得する.
    • WindowManager#getDefaultDisplayメソッドで, Displayクラスのインスタンスを取得する.
    • Display#getWidth/getHeightメソッドで, 画面サイズ情報を取得する.
package com.moonlight_aska.android.displaysize;

import android.app.Activity;
import android.os.Bundle;
import android.view.Display;
import android.view.WindowManager;
import android.widget.TextView;

public class DisplaySize extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView txWidth = (TextView)findViewById(R.id.width_id);
    TextView txHeight = (TextView)findViewById(R.id.height_id);
    // WindowManagerのインスタンス取得
    WindowManager wm = getWindowManager();
    // Displayのインスタンス取得
    Display disp = wm.getDefaultDisplay();
    String width = "Width = " + disp.getWidth();
    String height = "Height = " + disp.getHeight();
    txWidth.setText(width);
    txHeight.setText(height);
  }
}

注) API Level 13以降は, Display#getSizeメソッドを使用するように変更となった.
    WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
    // ディスプレイのインスタンス生成
    Display disp = wm.getDefaultDisplay();
    Point size = new Point();
    disp.getSize(size);
    String width = "Width = " + size.x;
    String height = "Height = " + size.y;


View継承クラスの場合

WindowsManagerのインスタンス取得に, View#getContextメソッドを使用する.
注) API Level 13以降は, Display#getSizeメソッドを使用するように変更となった.

WindowManager wm = (WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();
int width = disp.getWidth();
int height = disp.getHeight();