Bescottee苦しいときは伸びてるとき、楽なときは伸びていないとき

40 Android4.1で追加された7インチレイアウトをソースコードから調査

admin to development — Tags: , ,  

Android4.1 7inch layout

7インチ向けレイアウトとは?

Android 4.1 UI is different for 7, 10 inch tabletsの記事によると7インチ向けに新しいレイアウトが提示されたという記載がありました。どのようなレイアウトなのかをソースコードから調査してみました。

対象ソースコード

以下のようにAndroidの一部のソースコードはSDK Manager から提供されていますので、そこから該当するソースコードを探しました。

android4.1 SDKで提供されているソースコードの取得方法

ここで取得したソースコードは、[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行目までの実装内容についてはこちらのブログにわかりやすい説明がありますのでこちらを参照ください。

Android 4.1で新しく追加された7イント向けの追加レイアウト
対象デバイス 短い辺の長さ システムバー 説明
Phone向け 600dp未満 false 主に Phone 向けレイアウト。バックボタン、ホームボタン、Recentボタンを提供するためにナビゲーションバーが必要
7インチタブレット 600dp~719dpの間 false 今回追加になった7インチ向けレイアウト。操作ボタンを提供するためにナビゲーションバーが必要
10インチ(以上)タブレット 720dp以上 true 大画面タブレット向けのためシステムバーが必要。ナビゲーションボタンはシステムバーの中で提供

まとめ

新しく追加された7インチ向けレイアウトをシステムバーとナビゲーションバーの提供方法という視点で調査を行いました。
7インチレイアウトでは、基本的にはPhoneレイアウトに近いシステムバーやナビゲーションバーの提供がなされますが、landscape持ちの場合は2ペインで左にリスト、右の詳細画面という(iPadでいうと Master/Detail 構造)レイアウトも可能です(もちろん Fragment の利用が必須)。
だからといって無暗に2ペインにせずにユーザにとって本当に使いやすいレイアウトを考えて、それに最適なレイアウトを提供するようにすべきです。
まだまだこれから解像度も上がってくると思いますからこの7インチ系のレイアウトの進化は楽しみです。

40件のコメント »

  1. adakoda より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  2. わかめ より:

    RT @adakoda: Android4.1で追加された7インチレイアウトをソースコードから調査 http://andbrowser.com/develop...

  3. vvakame より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  4. dmp より:

    RT @adakoda: Android4.1で追加された7インチレイアウトをソースコードから調査 http://andbrowser.com/develop...

  5. dmp より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  6. ktaros2 より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  7. matariki45 より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  8. Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...

  9. わかめ より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...

  10. Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...

  11. vvakame より:

    [Android] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/BSm7UGKG

  12. わかめ より:

    [Android] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://andbrowser.com/develop...

  13. dmp より:

    [android][JellyBean] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://andbrowser.com/develop...

  14. dmp より:

    [android][JellyBean] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/BkyyfmCX

  15. niyaty より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  16. openduck より:

    [Android] / “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/BSm7UGKG

  17. natuki333 より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  18. meujazz より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/mpyn0Iqf

  19. webdesignstatio より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee 7インチ向けレイアウトとは? Android 4.1 UI is different for 7… http://t.co/hT2OGCdL

  20. rssfeed7 より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/1pqHBYLD

  21. andropink より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/9d01lBap

  22. hatebu_android より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee (4 users) http://t.co/V0UXMZIr #androidjp

  23. smafonews より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/gxHhQuFG #スマホ

  24. rss_hateb_roy より:

    android: Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/ejYSYSQG

  25. wpgnews より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/SN31s5kd

  26. _popkiller_ より:

    “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/u13atejf

  27. androidnewsbot より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/O8JoULpv #AndroidJP

  28. hatena_news より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee: 7インチ向けレイアウトとは? Android 4.1 UI is different for 7,… http://t.co/638y2ls4

  29. star_zero より:

    “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/lBpzkuFC

  30. kounaien1234 より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/94f4q9OU

  31. niigata_jyouhou より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/Bhs8ZU5a

  32. hilbert_d より:

    【はてブ新着IT】 Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/i3DU0BUj

  33. Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://andbrowser.com/develop...

  34. sotokanda_goro より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/Ik6KDg1C

  35. yamanetoshi より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://andbrowser.com/develop...

  36. sigeharucom より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee http://t.co/aqTU3gbA #androiDev

  37. igaiga07 より:

    “Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee” http://t.co/eR1awmEm

  38. youten_redo より:

    Android4.1で追加された7インチレイアウトをソースコードから調査 http://t.co/yRYhkANR いまさら読んでいる。

  39. eno_keita より:

    Android4.1(Jelly Bean)で追加された7インチレイアウトをソースコードから調査しました。 | Bescottee – http://t.co/5PT5tbyE

  40. monon99 より:

    @m3_jp 詳しくはこの辺参照で。
    http://t.co/V0yt1lLt
    root取ってタブレットUI使う方法もあるので、検討してみるのも有りかと。
    http://t.co/5SCanMS7

このコメント欄の RSS フィード トラックバック URL

コメントをどうぞ