アプリケーションからNavigationBarの表示指定をする

アプリケーションからNavigationBarの表示指定が可能です。
ただし、Frameworks側から解除されるタイミングがあるので要注意です。

NavigationBarの表示指定が可能

アプリケーションから指定する方法は以下のViewクラスのsetSystemUiVisibility()をコールします。
http://developer.android.com/intl/ja/reference/android/view/View.html#setSystemUiVisibility%28int%29

手順はこんな感じ。

  • ViewにListenerを登録
    • View#setOnSystemUiVisibilityChangeListener
  • 表示方法を指定
    • View#setSystemUiVisibility

指定できる表示方法

  • 表示を薄くする View.SYSTEM_UI_FLAG_LOW_PROFILE
  • 完全非表示   View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
{
                   :
	View view;
	view = findViewById(R.id.linerLayout);
        	view.setOnSystemUiVisibilityChangeListener(mOnSystemUiVisibilityChangeListener);
	view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
                   :
}

private OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener = new OnSystemUiVisibilityChangeListener(){

	@Override
	public void onSystemUiVisibilityChange(int visibility) {
		Log.e("","call onSystemUiVisibilityChange = " + visibility);
	}
};
    
View.SYSTEM_UI_FLAG_LOW_PROFILE

NavigationBarの表示領域はそのまま、ただし薄く表示される。

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

NavigationBarの表示領域が完全にHideになり、アプリケーションの表示領域が広がる。

Frameworks側から解除されるタイミング

以下のユースケースでNavigationBarの表示指定が解除されます。

  • スクリーンをタッチダウンしたとき
  • 電源OFFダイアログ(GlobalActions)を表示するとき
  • アプリケーションが非アクティブ、アクティブに遷移したとき

解除されるタイミングについては別途、詳細に調べようと思います。