LoginSignup
14
17

More than 3 years have passed since last update.

[Android]常にフルスクリーンにしておきたい時のTIPS

Last updated at Posted at 2019-09-29

目的

  • ナビゲーションバーが邪魔で基本常に非表示にしておきたい

方法

以下の処理を実装する。

MainActivity.kt
override fun onStart() {
     super.onStart()
     hideSystemUI()    
}

fun hideSystemUI() {
     window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            or View.SYSTEM_UI_FLAG_FULLSCREEN
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
}

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    if (hasFocus) hideSystemUI()
}

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

「外部からスワイプしないとナビゲーションバーが出てこない上に、出てきたナビゲーションは半透明になる」というモードを指す。
なお、ナビゲーションバーは普通がいいという場合はSYSTEM_UI_FLAG_IMMERSIVEを使う。

View.SYSTEM_UI_FLAG_FULLSCREEN

ステータスバーを非表示にする。

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

ナビゲーションバーを非表示にする

View.SYSTEM_UI_FLAG_LAYOUT_STABLE

ナビゲーションバーが非表示になった時にレイアウトが崩れないようにする。

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

ステータスバーが非表示になった時にレイアウトが崩れないようにする。

onWindowFocusChangedでhideSystemUIする理由

これがないとDialogを表示するタイミングで再度ナビゲーションバーが表示されてしまう。

それでもDialogFragment表示時にナビゲーションが表示されてしまう場合

私は表示されしまったので以下の実装を行い対処した。
このためにBaseDialogFragmentができてしまったのであまり良い方法ではないかも。

BaseDialogFragment.kt
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        hideSystemUI()
    }

    // ソフトウェアキーの非表示
    private fun hideSystemUI() {
        dialog?.window?.setFlags(
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
        )
        activity?.window?.decorView?.systemUiVisibility?.let {
            dialog?.window?.decorView?.setSystemUiVisibility(it)
        }
        dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
    }

参考

全画面モードを有効にする
https://developer.android.com/training/system-ui/immersive

14
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
17