June 7, 2012

画像とdrawable-xxxの関係

Androidではいろいろなスクリーン(LCD)が存在するため、どのスクリーンでも最適に表示できるように工夫がされています。画像の表示に関していえば、スクリーンのdpiによって分類され、画像を格納するフォルダには次の4つの分類があります。
  • drawable-xhdpi(extra high density、320dpiまで)
  • drawable-hdpi(high density、240dpiまで)
  • drawable-mdpi(middle density、160dpiまで)
  • drawable-ldpi(low density、120dpiまで)
ちなみにdrawableはdrawable-mdpiと同じ扱いになります。

画像を用意するときは、それぞれのdpiに応じて用意するこができ、それぞれのサイズの比率はmdpiを基準(×1.0)として、ldpiは×0.75、hdpiは×1.5、xhdpiは×2.0になります。かといってそれぞれのdpi用にすべて画像を用意する必要は必ずしもありません。最低1つ用意されていれば、それを代用してスケーリングして表示してくれます。

ただし、例えば1つしか用意しない場合は、その画像をどのフォルダにおくかによって意味がかわってきますので注意が必要です。いま下記のような64×64ピクセルの画像を用意したとします。


それをdrawable-mdpiフォルダにおいた場合、それをmdpiのスクリーンで表示するとそのままのサイズで表示されますが、hdpiのスクリーンで表示すると拡大(×1.5)して表示されます。


逆にその画像をdrawable-hdpiフォルダにおいた場合、それをhdpiのスクリーンで表示するとそのままのサイズで表示されますが、mdpiのスクリーンで表示すると縮小(×0.67)して表示されます。


スケーリングがはいれば画像はそのままでなく加工されて表示されますので、奇麗に表示される場合もあれば、見苦しくなる場合もあります。

以上のことを考慮しながら画像のリソースを用意する必要があります。

参考:Android Developers:Supporting Multiple Screens

No comments:

Post a Comment