@@ -9,6 +9,7 @@ import android.view.animation.AccelerateDecelerateInterpolator
99import androidx.activity.viewModels
1010import androidx.appcompat.app.AppCompatActivity
1111import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
12+ import androidx.core.view.isVisible
1213import androidx.lifecycle.lifecycleScope
1314import androidx.navigation.fragment.NavHostFragment
1415import androidx.navigation.ui.NavigationUI
@@ -24,6 +25,7 @@ class MainActivity : AppCompatActivity() {
2425 private lateinit var binding: ActivityMainBinding
2526 private val TAG = MainActivity ::class .java.simpleName
2627 private val viewModel: MainActivityViewModel by viewModels()
28+ private var isBottomNavViewVisible = true
2729
2830 override fun onCreate (savedInstanceState : Bundle ? ) {
2931 // Handle the splash screen transition
@@ -53,6 +55,8 @@ class MainActivity : AppCompatActivity() {
5355 }
5456
5557 val bottomNavigationView = binding.bottomNavView
58+ bottomNavigationView.isVisible =
59+ savedInstanceState?.getBoolean(" bottomNavViewVisibility" ) ? : isBottomNavViewVisible
5660 val navHostFragment =
5761 supportFragmentManager.findFragmentById(R .id.fragmentContainerView) as NavHostFragment
5862 val navController = navHostFragment.navController
@@ -121,27 +125,38 @@ class MainActivity : AppCompatActivity() {
121125
122126 // Hide the bottom navigation bar with animation
123127 private fun hideBottomNavigation (view : View ) {
124- view.setLayerType(View .LAYER_TYPE_HARDWARE , null )
125- view.clearAnimation()
126- view.animate()
127- .translationY(view.height.toFloat())
128- .setDuration(300 )
129- .setInterpolator(AccelerateDecelerateInterpolator ())
130- .withEndAction {
131- view.visibility = View .GONE
132- view.setLayerType(View .LAYER_TYPE_NONE , null )
133- }
128+ view.apply {
129+ setLayerType(View .LAYER_TYPE_HARDWARE , null )
130+ clearAnimation()
131+ animate()
132+ .translationY(view.height.toFloat())
133+ .setDuration(300 )
134+ .setInterpolator(AccelerateDecelerateInterpolator ())
135+ .withEndAction {
136+ isVisible = false
137+ isBottomNavViewVisible = false
138+ setLayerType(View .LAYER_TYPE_NONE , null )
139+ }
140+ }
134141 }
135142
136143 // Show the bottom navigation bar with animation
137144 private fun showBottomNavigation (view : View ) {
138- view.visibility = View .VISIBLE
139- view.setLayerType(View .LAYER_TYPE_HARDWARE , null )
140- view.clearAnimation()
141- view.animate()
142- .translationY(0f )
143- .setDuration(300 )
144- .setInterpolator(AccelerateDecelerateInterpolator ())
145- .withEndAction { view.setLayerType(View .LAYER_TYPE_NONE , null ) }
145+ view.apply {
146+ isVisible = true
147+ isBottomNavViewVisible = true
148+ setLayerType(View .LAYER_TYPE_HARDWARE , null )
149+ clearAnimation()
150+ animate()
151+ .translationY(0f )
152+ .setDuration(300 )
153+ .setInterpolator(AccelerateDecelerateInterpolator ())
154+ .withEndAction { setLayerType(View .LAYER_TYPE_NONE , null ) }
155+ }
156+ }
157+
158+ override fun onSaveInstanceState (outState : Bundle ) {
159+ super .onSaveInstanceState(outState)
160+ outState.putBoolean(" bottomNavViewVisibility" , isBottomNavViewVisible)
146161 }
147162}
0 commit comments