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