7インチ向けレイアウトとは?
Android 4.1 UI is different for 7, 10 inch tabletsの記事によると7インチ向けに新しいレイアウトが提示されたという記載がありました。どのようなレイアウトなのかをソースコードから調査してみました。
対象ソースコード
以下のようにAndroidの一部のソースコードはSDK Manager から提供されていますので、そこから該当するソースコードを探しました。
ここで取得したソースコードは、[Android SDKのインストールパス] android-sdk-windows\sources\ 以下に保存されます。Android4.1の場合は、android-16 のため、android-sdk-windows\sources\android-16 以下が該当するソースコードです。
この中の
\com\android\internal\policy\impl\PhoneWindowManager.java
が今回の調査対象にしました。
ざっと見ていくと、以下のメソッドの中にサイズごとにレイアウトを分けている部分がありました。
// SystemUI (status bar) layout policy int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT / DisplayMetrics.DENSITY_DEVICE; if (shortSizeDp < 600) { // 0-599dp: "phone" UI with a separate status & navigation bar mHasSystemNavBar = false; mNavigationBarCanMove = true; } else if (shortSizeDp < 720) { // 600-719dp: "phone" UI with modifications for larger screens mHasSystemNavBar = false; mNavigationBarCanMove = false; } else { // 720dp: "tablet" UI with a single combined status & navigation bar mHasSystemNavBar = true; mNavigationBarCanMove = false; } if (!mHasSystemNavBar) { mHasNavigationBar = mContext.getResources().getBoolean( com.android.internal.R.bool.config_showNavigationBar); // Allow a system property to override this. Used by the emulator. // See also hasNavigationBar(). String navBarOverride = SystemProperties.get("qemu.hw.mainkeys"); if (! "".equals(navBarOverride)) { if (navBarOverride.equals("1")) mHasNavigationBar = false; else if (navBarOverride.equals("0")) mHasNavigationBar = true; } } else { mHasNavigationBar = false; }
調査結果
レイアウトごとにわけている条件を整理すると以下の表のようになります。
1031行目から1040行目までの実装内容についてはこちらのブログにわかりやすい説明がありますのでこちらを参照ください。
対象デバイス | 短い辺の長さ | システムバー | 説明 |
---|---|---|---|
Phone向け | 600dp未満 | false | 主に Phone 向けレイアウト。バックボタン、ホームボタン、Recentボタンを提供するためにナビゲーションバーが必要 |
7インチタブレット | 600dp~719dpの間 | false | 今回追加になった7インチ向けレイアウト。操作ボタンを提供するためにナビゲーションバーが必要 |
10インチ(以上)タブレット | 720dp以上 | true | 大画面タブレット向けのためシステムバーが必要。ナビゲーションボタンはシステムバーの中で提供 |
まとめ
新しく追加された7インチ向けレイアウトをシステムバーとナビゲーションバーの提供方法という視点で調査を行いました。
7インチレイアウトでは、基本的にはPhoneレイアウトに近いシステムバーやナビゲーションバーの提供がなされますが、landscape持ちの場合は2ペインで左にリスト、右の詳細画面という(iPadでいうと Master/Detail 構造)レイアウトも可能です(もちろん Fragment の利用が必須)。
だからといって無暗に2ペインにせずにユーザにとって本当に使いやすいレイアウトを考えて、それに最適なレイアウトを提供するようにすべきです。
まだまだこれから解像度も上がってくると思いますからこの7インチ系のレイアウトの進化は楽しみです。
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
RT @adakoda: Android4.1で追加された7インチレイアウトをソースコードから調査 http://andbrowser.com/develop...
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
RT @adakoda: Android4.1で追加された7インチレイアウトをソースコードから調査 http://andbrowser.com/develop...
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...
[Android] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/BSm7UGKG
[Android] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://andbrowser.com/develop...
[android][JellyBean] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://andbrowser.com/develop...
[android][JellyBean] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/BkyyfmCX
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
[Android] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/BSm7UGKG
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee 7インチ向けレイアウトとは? Android 4.1 UI is different for 7… http://t.co/hT2OGCdL
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/1pqHBYLD
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/9d01lBap
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee (4 users) http://t.co/V0UXMZIr #androidjp
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/gxHhQuFG #スマホ
android: Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/ejYSYSQG
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/SN31s5kd
“Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/u13atejf
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/O8JoULpv #AndroidJP
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee: 7インチ向けレイアウトとは? Android 4.1 UI is different for 7,… http://t.co/638y2ls4
“Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/lBpzkuFC
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/94f4q9OU
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/Bhs8ZU5a
【はてブ新着IT】 Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/i3DU0BUj
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://andbrowser.com/develop...
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/Ik6KDg1C
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/aqTU3gbA #androiDev
“Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/eR1awmEm
Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/yRYhkANR いまさら読んでいる。
Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://t.co/5PT5tbyE
@m3_jp 詳しくはこの辺参照で。
http://t.co/V0yt1lLt
root取ってタブレットUI使う方法もあるので、検討してみるのも有りかと。
http://t.co/5SCanMS7