画面の幅・高さの取得

画面の幅や高さを取得する方法を紹介します。それには次の非推奨と推奨の2種類の方法があります。

非推奨な方法

まず、非推奨とされている方法から紹介します。

それは次のようなコードです。

public class MainActivity extends Activity
{
    private int winW, winH;

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WindowManager wm =  (WindowManager)getSystemService(WINDOW_SERVICE);
        Display disp = wm.getDefaultDisplay();
        winW = disp.getWidth();
        winH = disp.getHeight();
        Log.i("MainActivity : ", "画面幅 = " + winW);
        Log.i("MainActivity : ", "画面高さ = " + winH);
    }
}

このようにDisplayクラスを使って画面幅と高さを取得するのは現在非推奨となっています。

推奨されている方法

画面の幅、高さを得る一番良い方法はDisplayMetricsクラスを使うことです。

例えば次のようなコードを書きます。

public class MainActivity extends Activity
{
    private int winW, winH;
    
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        winW = dm.widthPixels;
        winH = dm.heightPixels;
        Log.i("MainActivity : ", "画面幅 = " + winW);
        Log.i("MainActivity : ", "画面高さ = " + winH);
    }

}

widthPixelsからは画面の短辺のピクセル数、heightPixelsからは画面の長辺のピクセル数を取得できます。

画面が回転してもこの値は変化しません。

DisplayMetricsは幅や高さなどの情報を持つクラスでgetMetricsメソッドでこのインスタンスに画面情報を持たせることができます。

Activityなしで画面幅を取得するには

今まで紹介したのはActivity内で画面の幅・高さを取得するコードでしたが、スタティックに参照することも出来ます。

DisplayMetrics dm = Resources.getSystem().getDisplayMetrics();
width = dm.widthPixels;
height = dm.heightPixels;

Activity以外から画面の大きさを知りたいならこの方法が使えます。

関連項目
プライバシーポリシー