このレッスンでは、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 は、ナビゲーション バーがグレー表示になったギャラリー画像を示しています(ギャラリー アプリではステータスバーが完全に非表示になり、暗くなりません)。ナビゲーション バー(画像の右側)には、ナビゲーション コントロールを表す薄い白い点が表示されます。
同じギャラリー画像で、システムバーが表示されている状態を図 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);