pooh3's memo

Android周りを中心に。軽めに、いい加減さ50%程度で

hdpiの端末でmdpiやxhdpiやnodpiや無指定の画像を表示するとどうなるか?

Android開発者の皆様、Androidのプロジェクトを管理されている皆様
Androidの画像制作をされているデザイナーの皆様
あけましておめでとうございます。


今年初記事は
コスト削減のために他dpiで使用している画像を流用してみたいって方々のために
drawable-[hoge]dpiでフォルダでわけて管理している画像を
他dpiに対する流用時の適応仕様(出力サイズ(px)の仕様)を
あまり記事としては見つからないので確認してみました。(今回はhdpi、xhdpiの端末のみ)


表示している画像はすべて40x40(px)の正方形のpngファイルで下記の各々のフォルダにそれぞれ別名で入れて調査しました。
・drawable
・drawable-nodpi
・drawable-mdpi
・drawable-hdpi
・drawable-xhdpi
・drawable-xxhdpi

下の画像は上記のフォルダ順と同じ順序でLinearLayoutにImageViewとして、サイズ指定はwrapcontentで画素密度がhdpiの端末上で表示しました。
各々のpng画像の右にあるテキストの数字はViewクラスのgetWidth()で取得されたpng画像の横サイズ(px)です。
f:id:pooh3mobi:20140112202847p:plain












上の画像にあるように
”『drawable-nodpi』フォルダと『drawable』フォルダは別仕様”
ということがわかります。
そして
”『drawable』と『drawable-mdpi』は同じサイズで表示されている”
”『drawable-nodpi』と『drawable-xhdpi』は同じサイズで表示されている”
というのがわかりますね。

ここメモ

xhdpiのエミュレータ上でも調べましたが、どうやら『drawable-nodpi』フォルダはマルチdpi対応フォルダのようです。つまり他dpiの端末でも『drawable-nodpi』フォルダに入っているサイズ40pxの画像は40pxで表示されます。
逆に無印の『drawable』フォルダはxhdpi端末でも『drawable-mdpi』フォルダと同様サイズでした。つまり『drawable』≒『drawable-mdpi』ということでしょうか?


といったように、Android developersに明確な記述はなくてもdpi指定された(されていない)drawableフォルダの描画処理には、ちょこっと癖があるので、くれぐれも他画素密度(dpi)用に作成された画像を利用するときはご注意ください。

コード:https://github.com/Pooh3/DrawableFolderExample01