Fix light navigation bar not applied on first launch (#5582)

No need to touch light system bars when running the splash screen since
they're not that noticeable, and it also breaks on some ROMs.

(cherry picked from commit 116fec208b06bf3a5d8c23ea65831c175015cd90)
This commit is contained in:
Ivan Iskandar 2021-07-20 04:45:28 +07:00 committed by Jobobby04
parent bd4a0e0a73
commit 8f0eeb6c9c

View File

@ -19,7 +19,6 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
@ -347,12 +346,6 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
window.statusBarColor = Color.TRANSPARENT
window.navigationBarColor = Color.TRANSPARENT
val wicc = WindowInsetsControllerCompat(window, window.decorView)
val isLightStatusBars = wicc.isAppearanceLightStatusBars
val isLightNavigationBars = wicc.isAppearanceLightNavigationBars
wicc.isAppearanceLightStatusBars = false
wicc.isAppearanceLightNavigationBars = false
splashScreen.setOnExitAnimationListener { splashProvider ->
// For some reason the SplashScreen applies (incorrect) Y translation to the iconView
splashProvider.iconView.translationY = 0F
@ -366,19 +359,12 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
}
}
var barColorRestored = false
val splashAnim = ValueAnimator.ofFloat(1F, 0F).apply {
interpolator = FastOutSlowInInterpolator()
duration = SPLASH_EXIT_ANIM_DURATION
addUpdateListener { va ->
val value = va.animatedValue as Float
splashProvider.view.alpha = value
if (!barColorRestored && value <= 0.5F) {
barColorRestored = true
wicc.isAppearanceLightStatusBars = isLightStatusBars
wicc.isAppearanceLightNavigationBars = isLightNavigationBars
}
}
doOnEnd {
splashProvider.remove()