Android Tips #43 mdpi の3倍な xxhdpi について & AVD の作りかた

catch

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

mdpi の 3倍!!!

先日 ADT 21.1.1 がリリースされたのでインストールしまして、新規プロジェクトを作成してみたところ…

xxhdpi01

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 版を作ってみました。

xxhdpi02

なお、確認用に各画面密度に名前を表示するようにしておきました。

xxhdpi03_2

エミュレータで確認してみる

上記で作成したランチャーアイコンが xxhdpi で正しく表示されるか確認したいので、xxhdpi な AVD イメージを作ってみましょう。まずは AVD Manager を開き「Device Definisions」画面を開きます。

xxhdpi04

Nexus One や Nexus 7 などが表示されていますね。ここに Xperia Z の設定を追加してみます。

xxhdpi05

スクリーンサイズは 5.0 インチ、解像度は 1080 x 1920 px に設定します。すると右側にある「Density」が xxhdpi になっているはずです。

xxhdpi06

あとは「Create AVD」ボタンを押して作成します。以下のように設定しました。

xxhdpi07

これで試せる!!と思いきや、そうはいきませんでした…
バグがあるようなので、強制的にプロフィールを変更して再起動します。次のバージョンアップで直ってくれることを願っております。

adb shell setprop qemu.sf.lcd_density 443
adb shell stop
adb shell start

すると xxhdpi の解像度のエミュレータが起動するはずです!

xxhdpi08

フルサイズのまま投稿してみました。なんてでっかいんでしょう…。サンプルアプリのランチャーアイコンも xxhdpi の画像が無事表示されました。

xxhdpi09

まとめ

今後 xxhdpi の端末は徐々に増えてくると思います。アプリ内の画像を綺麗に表示するためにはやはり対応しておきたいところではありますが、画像ファイルをただひたすらに突っ込んでいくという形式のアプリは xxhdpi に対応するとアプリサイズがかなり大きくなってしまうと思います。。
9-patch や Shape などの Drawable リソース を活用して、アプリサイズの増加は抑えつつ対応するようにしましょう!

参考