アプリを作っていると画像リソースは
/res/drawableとフォルダを作って置きたくなる。
だけどこの場合、drawable-mdpi(中解像度)と同じ解像度でスケーリングされて表示される。
ということは、
drawable-xhdpi
drawable-hdpi
が対応になる端末の場合、
中解像度として扱われたdrawableの画像が拡大されて表示される。
それはまずい、だって伸びて汚くなるから。
ではどのくらい拡大されるか?
まず各解像度の関係だが、
端末のスクリーンの解像度(dpi)によって下記のフォルダに分類される。
・drawable-xhdpi(320dpiまで)
・drawable-hdpi(240dpiまで)
・drawable-mdpi(160dpiまで)
・drawable-ldpi(120dpiまで)
※drawableはdrawable-mdpiと同様になる
それぞれのサイズの比率はmdpiを基準(×1.0)として計算されるので
・drawable-xhdpi → 1×2
・drawable-hdpi → 1×1.5
・drawable-mdpi → 1×1
・drawable-ldpi → 1×0.75
になる。
なので最初に戻るがdrawableに100px:100pxで置いた画像の場合なら
drawable-xhdpi → 200px:200px
drawable-hdpi → 150px:150px
というように実際は拡大されて表示されているわけだ。
画像は見た目はそのままで表示させたいなら
基本的には各drawableフォルダに対応するサイズで画像を配置すべきだろう。
例:100px:100pxの画像の場合
・drawable-xhdpi → 200px×200px
・drawable-hdpi → 150px×150px
・drawable-mdpi → 100px×100px
・drawable-ldpi → 75px×75px
ただ大量に画像を使用している場合など容量が画像でいっぱいになってしまう。
その場合はどうするかだ。
一つは/res/drawable-nodpiの使用を検討してもいいかもしれない。
/res/drawable-nodpiフォルダを作り配置した画像は、
端末の解像度に関係なく自動スケーリングされないようになる。
ただ端末の解像度が小さい場合、縮小して表示されるという所は注意だ。
小さい画像でスケーリング表示が必要ない画像などはこちらに置いてしまうという方法はありかもしれない。
もう一つはdrawable-xhdpiにだけ画像を用意する方法も検討してもいい。
画像は拡大すると変に見えるが縮小される場合は意外と気にならないこともある。
そして意外とmdpiやldpiの端末というのが少ない事も理由だ。
ただ、100px:100pxの画像をdrawable-xhdpiに配置し
QVGAのエミュレーターで表示したらつぶれた感じになったので見た目はしっかり確認しよう。
あとはプログラム側でいじくるとか方法とかもあるだろう。
端末が沢山あるということは大変だ。