このレッスンでは、Android 4.0(API レベル 14)以降でシステムバー(ステータスバーとナビゲーション バー)を省略表示にする方法について説明します。それより前のバージョンの Android の場合、システムバーを省略表示にする方法は用意されていません。
このアプローチを使用すると、コンテンツのサイズは変更されませんが、システムバー内のアイコンは薄暗く縮小表示されるようになります。ユーザーが画面のステータスバー領域やナビゲーション バー領域に触れると、すぐにそのバーが完全に表示されます。このアプローチのメリットは、バーが存在したまま各アイコンの詳細が非表示になるため、バーに簡単にアクセスできるという利便性を犠牲にすることなく、没入型エクスペリエンスを実現できる点です。
ステータスバーやナビゲーション バーを省略表示にする
次のように、SYSTEM_UI_FLAG_LOW_PROFILE
フラグを使用することで、ステータスバーやナビゲーション バーを省略表示にすることができます。
Kotlin
// This example uses decor view, but you can use any visible view. activity?.window?.decorView?.apply { systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE }
Java
// This example uses decor view, but you can use any visible view. View decorView = getActivity().getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE; decorView.setSystemUiVisibility(uiOptions);
ユーザーが画面のステータスバーやナビゲーション バーに触れると、すぐにフラグがクリアされ、バーの省略表示が解除されます。フラグがクリアされた後、バーをもう一度省略表示にしたい場合は、フラグをもう一度セットする必要があります。
ナビゲーション バーが省略表示になっているギャラリー画像を図 1 に示します(このギャラリー アプリでは、ステータスバーは省略表示ではなく、完全に非表示になっています)。ナビゲーション バー(画像右側)には、ナビゲーション コントロールの存在を示す小さな白色の点が薄く表示されています。
図 1. 省略表示状態のシステムバー
同じギャラリー画像で、システムバーが表示されている状態を図 2 に示します。
図 2. 表示状態のシステムバー
ステータスバーやナビゲーション バーを表示する
setSystemUiVisibility()
を使用してセットしたフラグをプログラムでクリアする場合は、次のようにします。
Kotlin
activity?.window?.decorView?.apply { // Calling setSystemUiVisibility() with a value of 0 clears // all flags. systemUiVisibility = 0 }
Java
View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0);