Improve navigation transitions

This commit is contained in:
MM20 2021-09-30 16:34:48 +02:00
parent 0a897260a7
commit d20a9187ae
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -6,16 +6,18 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.compose.animation.*
import androidx.compose.animation.core.tween
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.geometry.Size import androidx.compose.ui.geometry.Size
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.core.view.doOnLayout import androidx.core.view.doOnLayout
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument import androidx.navigation.navArgument
import com.google.accompanist.insets.ProvideWindowInsets import com.google.accompanist.insets.ProvideWindowInsets
import com.google.accompanist.navigation.animation.AnimatedNavHost
import com.google.accompanist.navigation.animation.composable
import com.google.accompanist.navigation.animation.rememberAnimatedNavController
import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.ktx.isAtLeastApiLevel
import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.preferences.Settings
import de.mm20.launcher2.preferences.dataStore import de.mm20.launcher2.preferences.dataStore
@ -34,6 +36,7 @@ class ComposeActivity : AppCompatActivity() {
private lateinit var widgetHost: AppWidgetHost private lateinit var widgetHost: AppWidgetHost
@OptIn(ExperimentalAnimationApi::class)
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
//WindowCompat.setDecorFitsSystemWindows(window, false) //WindowCompat.setDecorFitsSystemWindows(window, false)
@ -42,7 +45,7 @@ class ComposeActivity : AppCompatActivity() {
WindowCompat.setDecorFitsSystemWindows(window, false) WindowCompat.setDecorFitsSystemWindows(window, false)
setContent { setContent {
val navController = rememberNavController() val navController = rememberAnimatedNavController()
val context = LocalContext.current val context = LocalContext.current
var windowSize by remember { mutableStateOf(Size(0f, 0f)) } var windowSize by remember { mutableStateOf(Size(0f, 0f)) }
@ -86,7 +89,14 @@ class ComposeActivity : AppCompatActivity() {
LocalNavController provides navController LocalNavController provides navController
) { ) {
LauncherTheme { LauncherTheme {
NavHost(navController = navController, startDestination = "home") { AnimatedNavHost(
navController = navController,
startDestination = "home",
exitTransition = { _, _ -> fadeOut(tween(300, 300)) },
enterTransition = { _, _ -> fadeIn(tween(200)) },
popEnterTransition = { _, _ -> fadeIn(tween(0)) },
popExitTransition = { _, _ -> fadeOut(tween(200)) },
) {
composable("home") { composable("home") {
LauncherMainScreen() LauncherMainScreen()
} }