「1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法」で紹介した1apkにするためにタブレットとスマートフォンの判断ロジックを準備する必要があると紹介しました。前回紹介した判断ロジックがなぜそのような実装になっているかを紹介します。
public static boolean isHoneycomb() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; } public static boolean isHoneycombTablet(Context context) { return isHoneycomb() && (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE; }
上記の isHoneycomb()と isHoneycombTablet() の判断ロジックを解説するために、以下の表で端末の対応APIバージョンと端末のインチサイズの関係を整理しました。(1)から(6)についてそれぞれ紹介します。世の中に対応端末が多い順番に紹介します。
端末インチサイズ |
xlarge(Extra large) 7~10インチ |
xlarge以外(large,normal,small) 2~7インチ |
|
---|---|---|---|
端末説明 | タブレット画面 | スマートフォン画面 | |
コードネーム | APIレベル | ||
GigerBread(GB)(2.3.4)系とそれ以前 | 10 以下 | (1) 現在存在しないが、今後発売される可能性がある | (2) 多数存在する |
Honeycomb(HC)(3.0)系 | 11 以上 | (3) いくつか存在する | (4) 存在しない |
IceCreamSandwich(ICS)(バージョン番号未定)系 | ?? 以上 | (5) 発売予定 | (6) 発売予定 |
xlargeなどの詳細な説明は、公式ドキュメント(英語)のSupporting Multiple Screensの「Range of screens supported」を読んでみてください。ソフトウェア技術ドキュメントを勝手に翻訳(2. 多様な画面のサポート)に日本語訳がありますのでこちらもお役に立つと思います。
(2)は、現在発売されているAndroid端末のほとんどが該当するものでいまAndroidマーケットにあるアプリのこの端末サイズに対応しているものがほとんどです。
(3)は最近発売されたAndroidタブレット端末で、xoom や Galaxy tab 10.1 や Optimus pad が該当します。
(4)は、該当する端末が今も将来も発売されません。理由はグーグルが honeycomb 3.0 系はタブレット向けのみでスマートフォン向けのリリースは実施しない、スマートフォン向けの次期OSは、IceCreamSandwich(ICS)(バージョン番号未定)で対応するという発表を行っているためです。
(1)は、現在のGBの最新バージョンが2.3.4ですが、GBも今後アップデートされる可能性があり、端末メーカーから発売される可能性があるためアプリ開発者としては対応しておく必要があります。(発売後に対応してもよいですが、事前に準備できることはしておきましょう)
(5),(6)については、まだ発表もされていませんが、現段階でわかっていることは、APIバージョンは11以上の数字が割り当てられますし、タブレット向けとスマートフォン向けのインチサイズの両方に対応されるということです。
では、 isHoneycomb()と isHoneycombTablet() の判断ロジックがどれに対応しているかというと、以下のようになります。
isHoneycomb()は、(3),(5),(6)を判断するために利用します。
isHoneycombTablet() は、(3),(5)を判断するために利用します。
isHoneycombTablet() の中で isHoneycomb() と実行端末のスクリーンサイズの取得、比較を行っています。これによって、将来(6)の端末が出てきたときに isHoneycomb() だけの判断ロジックではタブレット向けの画面レイアウトになってしまい、3インチのスマートフォン向けで2画面構成のアプリになり大変使いづらくなってしまいます。それをさけるために、 isHoneycomb()だけでなく、実行端末のスクリーンサイズを参照して、適切は画面レイアウトをユーザに提供する必要があります。
もちろん、開発スピードを上げるために、いま出ている端末だけの対応に注力して、 isHoneycomb()のみを利用することもよいと思います。
必ず上記のロジックを使わないといけないということではなく、きちんと開発するアプリの目的や対象端末、対象期間、対象とするユーザに応じて、適切な判断ロジックを利用して、1apkでタブレット向けとスマートフォン向けのアプリを開発していく必要があるということです。
タブレットとスマートフォン向けのAndroidアプリ開発手法 | Bescottee http://bit.ly/nqVnsP
1apkでAndroidタブレット向けとスマートフォン向けアプリを実現する方法 その2 – http://andbrowser.com/develop...
[...] [...]