社内外でiOS9の対応が盛り上がっていますが、そういえばAndroidでも(Android 6.0以外で)結構大きなニュースがあったなあと思いだしたので共有します。
ある意味では、Android 6.0よりも深刻な気はしています。
5.5インチで4K(3840 x 2160)解像度端末の発表
Xperia Z5 Premium / Z5 / Z5 Compact 詳細比較。解像度とメモリの差に注意 - Engadget Japanese
一週間前の9/3に、Xperia Z5が発表されました。
今回のXperia Z5は3機種発表されており、その1つの「Xperia Z5 Premium」は世界初の「4K解像度のハンドセット端末」となります。
ディスプレイ関連情報(dpiは手計算)
項目 | Z5 Premium | Z5 | Z5 Compact |
---|---|---|---|
画面サイズ | 5.5インチ | 5.2インチ | 4.6インチ |
解像度 | 3840 x 2160 | 1920 x 1080 | 1280 x 720 |
dpi | 801dpi(xxxxhdpi) | 424dpi(xxhdpi) | 319dpi(xhdpi) |
ご覧のとおり、Z5 Premiumでは既存のカテゴリ分類の最大である「xxxhdpi(480〜640dpi)」を遥かに上回っているため、新規カテゴリの「xxxxhdpi」に割り当てられることになるかと思われます。
(追記)実際には、動画や画像などのメディア表示は4K表示で行い、アプリ関連はFullHD(1920x1080)解像度として認識+表示されるようです。画面上ではアップコンバートされたような形で表示されるかと思います。
世界初4Kスマホ Xperia Z5 Premium、実はほとんどフルHD表示。写真&動画のみ4K - Engadget Japanese
とはいえ、5.5インチで4K表示が可能なディスプレイが登場していることは事実ですので、以下は「実際に現行のAPIでアプリも4K解像度表示されたらどうなるか」という体で読んでいただければと思います。(追記終わり)
とはいえ、実際にxxxxhdpiがすでにAndroid API側で認識されているかというと、そういうわけでもないようです。
まだOS側ではxxxxhdpiを想定していない?
DisplayMetrics | Android Developers
こちらがその名のとおり、DisplayMetrics関連のクラスになりますが、カテゴリ分けに使っている(と思われる)定数には、DENSITY_XXXXHIGHがありません。DENSITY_XXXHIGHまでのようです。
よく見るとコメントでも「xxxhdpiが入るのは4KのTVとかだから!」みたいなことが書いてあるので、本家もまだ2K解像度のハンドセット端末がうじゃうじゃ出てきている現実を直視できていないのかもしれません。
tools/aapt/AaptConfig.cpp - platform/frameworks/base - Git at Google
実際のリソース部分のディレクトリ分けをしているのはこの部分?っぽいですが、5.1.1の時点ではまだこちらも対応はされていないようです。(6.0はまだ公開されていないようなので、もしかしたら既に対応済みかもしれません。)
結論
上記の内容から、おそらく慌ててxxxxhdpiのリソースフォルダとリソースを用意しても、OS側で読み込んでくれない可能性はあります。が、このへんは端末(メーカー側)で対応している可能性もありますし、今後AOSPレベルで対応されることは間違いないでしょう。
こうなると、現状でAndroidのdpカテゴリは、ldpi〜xxxxhdpiで7種類になってしまいました。アプリ側は当然、画像リソースの管理をさらに考えたデザインを必要に迫られることになるでしょうし、「ハンドセットで4K解像度」の時点で、アプリ以外にも画像リソースを提供するAPIやWebデザインでも、これを踏まえた考慮が必要になってくることになるでしょう。
Z5 Premiumの国内販売は決まっていませんが、これを皮切りに他のメーカーでも4K解像度端末が販売されていくことは間違いありません。国内初の2K解像度端末「isai FL」が発売されて1年で他のメーカーからも2K解像度端末が発売されるようになっています。
そのことも踏まえ、今後のアプリやWebサイトのデザインは十分気をつけましょう。いつか自身の首を締めることになります。
おまけ(おさらい)
1dpあたりのpx数はこうなります。
ハンドセットは4〜6インチぐらいの端末を想定して書いています。
dp | px | 備考 |
---|---|---|
ldpi | 0.75px | |
mdpi | 1px | 10インチHD端末 |
hdpi | 1.5px | 7インチHD端末、10インチFHD端末 |
xhdpi | 2px | HDハンドセット端末、7インチFHD端末、10インチ2K端末 |
xxhdpi | 3px | FHDハンドセット端末、7インチ2K端末、10インチ4K端末 |
xxxhdpi | 4px | 2Kハンドセット端末、7インチ4K端末 |
xxxxhdpi | 6px | 4Kハンドセット端末 |
(追記)本文中にも記載していますが、Xperia Z5 Premiumではメディア(動画・画像)のみ4K表示ということでした。深くお詫び申し上げます。