2014年1月7日火曜日

KitKatのフルスクリーンモード

Immersive full-screen mode

SYSTEM_UI_FLAG_IMMERSIVE
API Level 19で追加されたSYSTEM_UI_FLAG_IMMERSIVEを使うと、NavigationBarを消した状態でタッチイベントをハンドリングできます。
画面下部をSwapすることでNavigationBar非表示を解除できます。
ただし、Action barのメニューを開いたり、オフスクリーン→オンスクリーンで解除されてしまうので制御が必要です。

http://developer.android.com/reference/android/view/View.html#SYSTEM_UI_FLAG_IMMERSIVE

SYSTEM_UI_FLAG_HIDE_NAVIGATIONと同時にセットする必要があります。
(SYSTEM_UI_FLAG_HIDE_NAVIGATIONを拡張したフラグ)

Viewに対して、フラグをセット。
        View view = findViewById(R.id.layout);
        view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);


初回表示の際、次のような注意画面が表示されます。

NavigationBar非表示の画面。



SYSTEM_UI_FLAG_IMMERSIVE_STICKY
SYSTEM_UI_FLAG_IMMERSIVEとことなり、画面下部をSwapすることでNavigationBarを一時的に表示できます。
NavigationBar表示後、一定時間が経過すると、再度、非表示モードに戻ります。

http://developer.android.com/reference/android/view/View.html#SYSTEM_UI_FLAG_IMMERSIVE_STICKY

Viewに対して、フラグをセット。
        View view = findViewById(R.id.layout);
        view.setSystemUiVisibility(View. SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
NavigationBar非表示の画面。

画面下部をSwapするとNavigationBarを表示します。