Fix a crash related to WindowInsetControllerCompat on Android 10 and below

This commit is contained in:
MM20 2022-02-20 18:37:29 +01:00
parent acd1803c36
commit 5549e5db30
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -7,10 +7,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import androidx.activity.viewModels
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.view.doOnNextLayout
import androidx.core.view.*
import com.afollestad.materialdialogs.LayoutMode
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.bottomsheets.BottomSheet
@ -55,30 +52,30 @@ class LauncherActivity : BaseActivity() {
}
}
val windowController = WindowInsetsControllerCompat(window, binding.rootView)
windowController.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
viewModel.lightStatusBar.observe(this) {
windowController.isAppearanceLightStatusBars = it
val windowController = ViewCompat.getWindowInsetsController(binding.rootView)
windowController?.isAppearanceLightStatusBars = it
}
viewModel.lightNavBar.observe(this) {
windowController.isAppearanceLightNavigationBars = it
val windowController = ViewCompat.getWindowInsetsController(binding.rootView)
windowController?.isAppearanceLightNavigationBars = it
}
viewModel.hideStatusBar.observe(this) {
val windowController = ViewCompat.getWindowInsetsController(binding.rootView)
if (it) {
windowController.hide(WindowInsetsCompat.Type.statusBars())
windowController?.hide(WindowInsetsCompat.Type.statusBars())
} else {
windowController.show(WindowInsetsCompat.Type.statusBars())
windowController?.show(WindowInsetsCompat.Type.statusBars())
}
}
viewModel.hideNavBar.observe(this) {
val windowController = ViewCompat.getWindowInsetsController(binding.rootView)
if (it) {
windowController.hide(WindowInsetsCompat.Type.navigationBars())
windowController?.hide(WindowInsetsCompat.Type.navigationBars())
} else {
windowController.show(WindowInsetsCompat.Type.navigationBars())
windowController?.show(WindowInsetsCompat.Type.navigationBars())
}
}
@ -127,6 +124,13 @@ class LauncherActivity : BaseActivity() {
lifecycle.addObserver(dynamicIconController)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
val windowController = ViewCompat.getWindowInsetsController(binding.rootView)
windowController?.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
override fun onResume() {
super.onResume()
binding.activityStartOverlay.visibility = View.INVISIBLE