pxとdpの違い ~Android アプリ開発の基礎【図解付き】~

Android アプリ開発基礎 〜 java〜

※本記事は2021年7月2日に更新しました。

「dpとかpxとか出てくるけど、これって何なの?」
「dpとpxって何が違うの?」

本記事ではAndroidアプリ開発で出てくる、
重要な単位のpx(ピクセル)とdpi、dpについて解説します。

この記事を読むと、以下の内容が理解できます。

  • px(ピクセル)とは何か
  • dpiとは何か
  • dp とは何か

それでは早速参りましょう!

前回記事はこちら

px(ピクセル)とは何か

まず、px(ピクセル)とは何か解説します。

画像がどのように構成されているか、ご存知でしょうか?

例えばWindows のペイントで円を描いたとき。
一見滑らかに線が描かれているように見えますが、
拡大するとカクカクしていることに気付きます。(下図)

このように、画像は小さい四角の集まりでできています。

この一つの四角の事をpx(ピクセル)と呼びます。
言い換えれば、画像はpxの集まりでできている、と言えます。

ピクセルが多ければ多いほど、画像はきめ細やかになります。

このpx、実はAndroidアプリの開発において、重大な欠点があります。
これについて、次のdpiを説明し、解説していきます。

※画像の要素を語るために、重要なものとして、『ドット』があります。
 厳密には『ドット』と『ピクセル』は異なるものなのですが、
 今回は説明のため同じものとして扱います
 詳細知りたい方は下記のページにて詳しい解説が載っていたのでご覧ください。
 

ドットとピクセルの違い
ドットとピクセルの違いを正確にご存知でしょうか? ネットで調べると、同じと言ったり、違うと言ったり、同じだけど違うと言ったり、それはもう良く分からない説明が溢れかえっています。 という訳で、本書がその違いを分かり易くご説明したいと思います。

dpiとは何か

dpiという言葉をご存じでしょうか。

dpiとは『dots per inch』の略で、
1インチにどれだけのドット(ピクセル)があるかを表した数値となります。

例として、下記図をご覧ください。
5dpiの図となります。

図のように、1インチにどれだけのドットが配置できるか、を表した単位がdpiです。
1インチあたりのドット数のため、『画面の密度』とも呼ばれます。

dpiは1インチにどれだけのドット(ピクセル)があるか、なので、
dpiが大きければ大きいほどピクセルが多い ⇒ 画像がきめ細やか
dpiが小さければ小さいほどピクセルが少ない ⇒ 画像が粗い
となります。

このことから、dpiは画面の解像度の単位として扱われます。

さて、ここで5dpiの時と3dpiの時のピクセルの大きさを比較してみましょう。

同じ1pxでもdpiの違いによって大きさがこれだけ変わります。
例えば5dpi のスマホと3dpiのスマホに1pxの画像を用意したとしましょう。
5dpiのスマホではちょうどよく表示されていたレイアウトが、
3dpiのスマホでは1pxが大きいせいで崩れてしまうかもしれません。

これでは困りますよね。
このことを解決するのがdpという単位です。

dp とは何か

『dp』は『密度非依存ピクセル(density independent pixels )』の略で、
その名の通り、密度(dpi)に依存しない単位です。

密度が5dpiだろうが、3dpiだろうが、1dpは1dpの大きさとなります。

このdpは160dpi の時に1dp = 1pxとなることが決まっています。
これを基準として、dpiの値によらず、常に画面上で一定のサイズとなるわけです。

※ px = dp * ( dpi / 160 ) の関係となっています。

dpはどの端末の解像度でも一定のサイズとなることから、
Viewの大きさの指定等、レイアウトに用いるのに適しています。

レイアウトで長さを指定する時はdpを使う

これを常に意識するようにしましょう。

※ dpiに依存しない単位として、spというものもあります。
 これはユーザーのフォントサイズに依存する単位です。
 レイアウトに用いると崩れるので好ましくないですが、
 文字サイズの指定には適しているため、

 文字のサイズの指定はspを使う

 と覚えておきましょう。

まとめ

今回の話をまとめます。

  • dpiとは画面の解像度の事
  • pxは端末のdpiに依存して大きさが変わってしまうため、レイアウトには用いない
  • レイアウトにはdpiに依存しないdpを用いる

Androidのアプリ開発でよく出てくる単位について、
理解は深まりましたでしょうか。

アプリ開発ではいろいろな端末で用いられることを想定して開発しなければなりません。
dpを使うことで考えるべきことが少しは減るので、
今回の話は重要だと考えています。

dpを使いこなし、大ヒットを量産するアプリ開発者になりましょう!

本記事が初心者の方の参考になれば幸いです。

次回の記事はこちら

コメント

タイトルとURLをコピーしました