fresh digitable

めんどくさかったなってことを振り返ったり振り返らなかったりするための記録

SYSTEM_UI_FLAG_IMMERSIVEとSYSTEM_UI_FLAG_IMMERSIVE_STICKYとの違い

API Level 19からは全画面表示をしたいときにどっちかのフラグをセット(View.setSystemUiVisibility())することで没入感をより高めることができる。

SYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_FULLSCREENとを合わせてセットすることで、システムUIが画面外に押し出されている状態になる。外にあるUIを引っ張り出すように(上か下エッジからスワイプ)すると表示される。二つのフラグの違いは次の通り。

  • SYSTEM_UI_FLAG_IMMERSIVE: システムUIが引っ張り出されたら、システムUIが消えた状態に戻らない
  • SYSTEM_UI_FLAG_IMMERSIVE_STICKY: システムUIが引っ張り出されたあと、しばらくするとまたシステムUIが引っ込む

IMMERSIVEの方を使い、View#setOnSystemUiVisibilityChangeListener()にリスナをセットすることでシステムUIの見え方が変わったイベントを受け取れる。このリスナの中で独自のUIを表示させるようにして、時間とか特定の操作で再びimmersiveな状態に遷移させれば良い。

システムUIが無いレイアウトに設定するためのフラグも一緒にセットしてやればカクついたりしない。詳しくは公式リファレンスを。

developer.android.com