AndroidアプリのUIを作る際の基本的なことをまとめていきたいと思います。
Appleのみが出しており端末の種類が限定的なiphoneと違い、Androidは画面サイズや画面密度が異なる端末が多種多様にあります。
Androidの画面を設計する際には、端末ごとの差異を考慮しなければ端末によって画面レイアウトが崩れるといった事態になってしまいます。
複数の端末に対応した設計する上で基本となる単位、用語について本稿ではまとめたいと思います。
レイアウト単位
Androidのレイアウトを設計する上で重要な単位がdp,dpi,px,spです。
px(pixel)とは
px(pixel)は実際の端末の画面上のピクセル数に対応する単位。
画面解像度は画面の大きさに関係なく、ピクセル総数で決まります。(720px x 1280pxとか1080px x 1920pxとかのアレ)
dpiとは
dpidots per inchとは1インチ(2.54cm)あたりのドット数を表す単位で、画面密度と呼ばれます。
dpiは画面サイズ(単位:インチ)と画面解像度によって決まり、この値が大きいほど1ドットあたりの大きさは小さいのできめ細やかな画面ということになります。
このdpiが端末によってバラバラのため、すなわち1ピクセルの大きさが異なるため、pxでUIコンポーネントの大きさを指定すると実サイズがまちまちになってしまいます。Androidのレイアウトでpx指定することは基本的にはありません。
dpとは
pxで指定すると端末の差異に対応できないため、画面密度に依存しない単位が必要です。
そこで出てくる単位がdpです。
dpはDensity-independent Pixelの略で、密度非依存ピクセルと訳されます。dipとも書きます。
dpiと名前がややこしいですが、正確に覚えましょう。pxが物理的な単位であったのに対し、dpは抽象的な単位です。
ここまでの話の逆を考えると、dpiがわかるならそれに対応した大きさを決めておくことで、実サイズを決定することが出来ることがわかると思います。
とはいえすべての存在する端末のdpiそれぞれに対応するのは不可能なので、Androidはdpiをグループ分けしています。
グループ | 画面密度(dpi) | 倍率 |
ldpi | ~120 | 0.75 |
mdpi | ~160 | 1 |
hdpi | ~240 | 1.5 |
xhdpi | ~320 | 2 |
xxhdpi | ~480 | 3 |
xxxhdpi | ~640 | 4 |