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でキャストすればよいです。
必要な方は上記コードをコピペで利用いただければと思います。