Android UI 基本 レイアウト単位について

この記事は2016年1月12日に書かれたものです。内容が古い可能性がありますのでご注意ください。


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です。

dpDensity-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

dpは以下の表からわかるようにグループのうちmdpiを基準として、グループごとにpxを決定します。

Androidではこの単位でレイアウトを指定することで、画面密度に依らず実サイズがほぼ同じにすることが出来ます。

spとは

spScale-independent Pixelの略で、dpに似ていますがこちらは文字サイズの指定に使われます。
文字はフォントサイズの変更に対応する必要がある場合もあるためです。
フォントサイズ設定に依らず文字のサイズを固定にしたいのであれば、dpで指定します。

ちなみにAndroidのガイドラインでは各UIコンポーネントは48dpを基準に考えるべきとされています。
これはどのようなdpiでも実サイズが9mmとなりユーザが使う上で操作しやすいとされるためです。

Androidでレイアウトを設計する上で基本となる単位についてその考え方と違いについて述べました。
まとめ
Androidでレイアウト指定をする際には、基本的にpxで直接指定するのではなくはdpを用いましょう。
フォント変更に対応した文字サイズを指定する場合はspを用いましょう。

  • このエントリーをはてなブックマークに追加