Android Studio

Kotlin/Android| systemUiVisibility Deprecated

ziziDev 2024. 12. 24. 09:12
반응형

android 30(API 30, Android 11) 이상에서는 systemUiVisibility 대신 WindowInsetsController를 사용하는 방식으로 변경되었습니다. 이제 더 세련되고 구체적으로 UI를 숨기거나 표시할 수 있어요.

이전 방식이 decorView와 systemUiVisibility에 의존했다면, 새로운 방식은 WindowInsetsController를 활용하여 상태바, 네비게이션바 등을 다루도록 개선됐습니다.

 

  private fun hideBottomNavigation() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
      val windowInsetsController = activity?.window?.insetsController
      windowInsetsController?.let {
        it.hide(WindowInsets.Type.systemBars()) // 상태바, 네비게이션바 숨김
        it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE // 스와이프로 다시 나타나게 설정
      }
    } else {
      @Suppress("DEPRECATION")
      activity?.window?.decorView?.systemUiVisibility =
        (View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
    }
  }

반응형