【Android】dpについて

Androidでdpとかを理解する必要があるため理解する

ピクセル(px)とは何か

表示装置が区別できる最小の描画(発光)単位。つまり点です…

しかしながらiOSではpt、Androidではdpなど独自の単位で表現されている

ピクセル = 解像度という言葉も下記の意味で使われています

①画面解像度(ピクセル数)

これは画面が何個の物理ピクセルでできているかを表している(マス目の数)

②画素密度(ppi / dpi)

例えば440 ppiと表されているのは1インチあたりに440個のピクセルが詰まっていることを表している

なぜピクセルでは不十分なのか

デバイスごとに解像度は異なっていて、同じ画面の幅であっても画素密度が低いものであれば160 ppi、高者で440 dpiと分かれている。もしpxのみでUIを描画しようとした場合低密度のデバイスであれば指で押せるボタンが描画されたけど、高密度の場合に爪楊枝のように小さく描画されてしまう可能性もあります。

これはディスプレイの性能が良くなることで必然的に画素が高密度となるため、UIが物理的に縮んでしまうことがpxが使われていない理由です。

dpとは

dpはAndroid開発における画面表示で様々なサイズの端末で一貫した表示を実現するために用いられる単位です。

dp = density-independent pixel

1dp = 1px@160dpi

1dpは160dpiを基準とした1pxのことになります

px = dp × (deviceDpi / 160)

デバイスではそのdpをpxに自動変換することでどの端末でも物理サイズが同じ見た目で表示することができます。

160dpi → 48px、320dpi → 96px、480dpi → 144px

おわりに

やっとdpを利用する意味を理解できました。iOSの場合はpx = pt × scaleで表されます。