Androidプログラマへの道 〜 Moonlight 明日香 〜 - ディスプレイ情報を取得する
端末のディスプレイ情報を取得するには, Displayクラスを使用する.

Activity継承クラスの場合

  • src/MainActivity.java
    • Activity#getWindowManagerメソッドで, WindowManagerのインスタンスを取得する.
    • WindowManager#getDefaultDisplayメソッドで, Displayのインスタンスを取得する.
    • DisplayMetricsのインスタンスを生成する.
    • Display#getMetricsメソッドで, ディスプレイ情報を取得する.
widthPixels画面の横幅(ピクセル数)
heightPixels画面の縦幅(ピクセル数)
xdpi横方向のレゾリューション(DPI)
ydpi縦方向のレゾリューション(DPI)
density論理密度160dpiを基準とした比率
densityDpiスクリーン密度
scaledDensityスケール密度
package com.moonlight_aska.android.displayinfo01;

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

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView info = (TextView)findViewById(R.id.info_id);
    // WindowManagerのインスタンス取得
    WindowManager manager = getWindowManager();
    // Displayのインスタンス取得
    Display display = manager.getDefaultDisplay();
    // DisplayMetricsのインスタンス生成
    DisplayMetrics metrics = new DisplayMetrics();
    // ディスプレイ情報の取得
    display.getMetrics(metrics);

    String str = "WidthPixels = " + metrics.widthPixels + "\n";
    str += "HeightPixels = " + metrics.heightPixels + "\n";
    str += "Xdpi = " + metrics.xdpi + "\n";
    str += "Ydpi = " + metrics.ydpi + "\n";
    str += "Density = " + metrics.density + "\n";
    str += "DensityDpi = " + metrics.densityDpi + "\n";
    str += "ScaledDensity = " + metrics.scaledDensity + "\n";
    info.setText(str);
  }
}


View継承クラスの場合

WindowsManagerのインスタンス取得に, View#getContextメソッドを使用する.

WindowManager manager = (WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);