画面サイズの取得とPX/DP変換方法について

Androidアプリ開発を行う上で様々なデバイスに対応するめ、画面サイズからレイアウトを定義する必要が出てきたので、画面サイズの取得方法を書き留めておきます。
また、ピクセル(px)とDPの変換も必要なので、合わせて記述しておきたいと思います。

画面サイズを取得する方法

デバイスの取得は下記記述で取得が出来ます。

    /**
     * デバイスのサイズ(PX)取得
     */
    private void getDispSize() {
        Display display = this.getWindowManager().getDefaultDisplay();
        Point point = new Point();
        display.getSize(point);
        convPXtoDP(point.x);
    }

point.xで画面の横幅を取得でき、point.yで画面の縦幅が取得できます。
例) デバイスのサイズが1080 x 1920であれば、横 = 1080、縦 = 1920

さて、画面サイズがピクセル(px)で取得出来たので、今度はDPへ変換していきます。
レイアウトのwidthやheightはpx指定ではなくdpで指定するので、DPへ変換する必要が出てきます。

ピクセル(px)をDPに変換する方法

ピクセル(px)をDPに変換するには下記記述で出来ます。

    /**
     * PX -> DP変換
     */
    private int convPXtoDP(int px) {
        DisplayMetrics metrics = this.getResources().getDisplayMetrics();
        int dp = (int)(px / metrics.density);
        return dp;
    }

引数のint pxは、前項で求めたピクセル(px)です。
画面解像度の比率で割ることでDPを求めることが出来ます。
注意)metrics.densityはfloatなので、小数点以下が不要な場合は、intでキャストすればよいです。

必要な方は上記コードをコピペで利用いただければと思います。

mana99 について

30代のシステムエンジニア 仕事以外にAndroidアプリを定期的にリリース モットーは「最短&シンプル」
カテゴリー: ノウハウ タグ: , , , パーマリンク