Android Tips #43 mdpi の3倍な xxhdpi について & AVD の作りかた
mdpi の 3倍!!!
先日 ADT 21.1.1 がリリースされたのでインストールしまして、新規プロジェクトを作成してみたところ…
drawable-xxhdpi フォルダが自動でできてるー!
API レベル 16 からなので Android 4.1 から適用されます。
http://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_XXHIGH
ということで xxhdpi に対応しないといけない時代になりました。xxhdpi は mdpi の 3倍の素材を用意しないといけません!!! 解像度は 400‑560 dpi、ランチャーアイコンは 144 x 144 px です。でっかいですねぇ。。
ということで xxhdpi についてまとめてみました。
xxhdpi の 機種たち
2013年春モデルの端末のいくつかが xxhdpi にあたるようです。
機種名 | メーカー | 解像度 | 画面サイズ | 画面密度 | OS |
---|---|---|---|---|---|
Galaxy S4 | Samsung | 1080 × 1920 px | 5.0 inch | 約 441 dpi | Android 4.2.2 |
Xperia Z (SO-02E) | Sony | 1080 × 1920 px | 5.0 inch | 約 443 dpi | Android 4.1 |
ARROWS X (F-02E) | Fujitsu | 1080 × 1920 px | 5.0 inch | 約 443 dpi | Android 4.1 |
ELUGA X (P-02E) | Panasonic | 1080 × 1920 px | 5.0 inch | 約 443 dpi | Android 4.1 |
Optimus G Pro (L-04E) | LG | 1080 × 1920 px | 5.0 inch | 約 443 dpi | Android 4.1 |
HTC J butterfly | HTC | 1080 × 1920 px | 5.0 inch | 約 443 dpi | Android 4.1 |
HTC One | HTC | 1080 × 1920 px | 4.7 inch | 約 468 dpi | Android 4.1 |
だいたい一緒ということが分かりました。w
[2013年3月15日] Galaxy S4 を追加しました!
[2013年3月11日] 一部誤記がありましたすみませんでした!
xxhdpi に対応させる
ランチャーアイコンを作ってみる
ランチャーアイコンは 144 x 144 px で作ります。余白 (パディング) を空けるべきという条件があるので、上下左右に 16 px のパディング (結果、コンテンツは 112 x 112 px) をあけて作ります。
今回はサンプルということで弊社アプリの電車なうのランチャーアイコンの xxhdpi 版を作ってみました。
なお、確認用に各画面密度に名前を表示するようにしておきました。
エミュレータで確認してみる
上記で作成したランチャーアイコンが xxhdpi で正しく表示されるか確認したいので、xxhdpi な AVD イメージを作ってみましょう。まずは AVD Manager を開き「Device Definisions」画面を開きます。
Nexus One や Nexus 7 などが表示されていますね。ここに Xperia Z の設定を追加してみます。
スクリーンサイズは 5.0 インチ、解像度は 1080 x 1920 px に設定します。すると右側にある「Density」が xxhdpi になっているはずです。
あとは「Create AVD」ボタンを押して作成します。以下のように設定しました。
これで試せる!!と思いきや、そうはいきませんでした…
バグがあるようなので、強制的にプロフィールを変更して再起動します。次のバージョンアップで直ってくれることを願っております。
adb shell setprop qemu.sf.lcd_density 443 adb shell stop adb shell start
すると xxhdpi の解像度のエミュレータが起動するはずです!
フルサイズのまま投稿してみました。なんてでっかいんでしょう…。サンプルアプリのランチャーアイコンも xxhdpi の画像が無事表示されました。
まとめ
今後 xxhdpi の端末は徐々に増えてくると思います。アプリ内の画像を綺麗に表示するためにはやはり対応しておきたいところではありますが、画像ファイルをただひたすらに突っ込んでいくという形式のアプリは xxhdpi に対応するとアプリサイズがかなり大きくなってしまうと思います。。
9-patch や Shape などの Drawable リソース を活用して、アプリサイズの増加は抑えつつ対応するようにしましょう!