2013年4月26日金曜日

Androidアプリの画面をdpでデザインする: Design layout of Android App with dp

Androidでは、1ピクセルの大きさが、機種によって大きく異なる。
そのため、一辺の長さを100ピクセルに指定してサムネイルの画像を表示すると、機種によっては大きさが半分ぐらいになってしまう。

では、機種に依存せずに、同じ見た目の大きさにするにはどうしたらよいのだろうか?
そのためには、ピクセルの単位で大きさを指定するのではなく、dip、pxと文字数を合わせてdpと呼ばれる事が多い、の単位で大きさを指定すればよい。
dipは、device independent pixcel(端末非依存ピクセル)の略で、1辺の大きさが1/160インチの仮想的なピクセルである。

前述のサムネイルの大きさがまちまちになる問題を避けるには、100ピクセルと言ったサイズを指定するのではなく、50dpと言うようにサイズを指定すればよい。そうすれば、見た目の大きさはすべての端末で同じ大きさになり、問題は解決する。

しかし、である。Androidは、端末の画面サイズも機種によりまちまちである。
例えば、50dpのサムネイルは横に幾つまではみ出さずに表示できるのだろうか?と言う疑問に突き当たる。
そこで、各種端末の画面の大きさをdp単位で求めてみたのが下表である。

表: 端末毎のdp単位で求めた画面サイズ
機種: Modelディスプレイサイズ: Display Size
(inch)
幅: Width (px)高さ: Height (px)dpi幅: Width (dp)高さ: Height (dp)
HTC Desire3.7480800252305508
Xperia4.0480854245314558
Galaxy S4.0480800233329549
Galaxy Nexus4.77201280312369655
Xperia Z5.010801920441392697
Galaxy Note5.38001280285449719
Galaxy Note II5.57201280267431767
Galaxy Mega 6.36.37201280233494879
Galaxy Tab7.06001024170566966
Nexus 77.08001280216594950
Optimus Pad8.976812801687331,221
Nexus 1010.0160025603028481,357

上記の表を見ると、縦画面の場合、HTC DesireからGalaxy Sまでは6つ、Galaxy NexusからXperia Zまでは7つ、Galaxy Noteは8つということが分かる。

このように、大きさをdp単位で指定し、各端末の画面サイズはdp単位の大きさを持つと考えるて、画面のレイアウトを考えればよい。

結構面倒な気もするが、画面の大きさがまちまちなのは、PCのブラウザの画面も同じなので、レイアウトの考え方は、ブラウザと同じように考えればよい。

ブラウザで横幅のレイアウトを考えるとき、%指定で幅をしていすれば上手く行く事が多い。Androidの場合、大きさを0dpと指定し、weightで幅の割合を指定すると、同様の事ができる。このように、HTMLやCSSでのレイアウトのテクニックをAndroidのレイアウトのXMLファイルで応用できないかを考えるとよい。実際、XMLファイルで指定できる属性は、HTMLでも名前が違うだけで同様の属性がある事が多い。

0 件のコメント:

コメントを投稿