From d4b2ff7de9e58636d3c047fef77d11e31ef9c495 Mon Sep 17 00:00:00 2001 From: GG Bond Date: Wed, 27 Dec 2023 21:57:38 +0800 Subject: [PATCH] New nav anim motion --- app/build.gradle.kts | 1 + .../com/hippo/ehviewer/ui/MainActivity.kt | 2 +- .../kotlin/com/hippo/ehviewer/ui/Theme.kt | 22 ++++++++++++------- gradle/libs.versions.toml | 2 ++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index afe225991..fbf815070 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -234,6 +234,7 @@ dependencies { implementation(libs.photoview) // Dead Dependency implementation(libs.directionalviewpager) // Dead Dependency implementation(libs.material) + implementation(libs.material.motion.core) implementation(libs.bundles.splitties) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt index babf05e85..e5d5b291d 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -411,7 +411,7 @@ class MainActivity : EhActivity() { } else { StartDestination }, - engine = rememberNavHostEngine(rootDefaultAnimations = ehNavAnim), + engine = rememberNavHostEngine(rootDefaultAnimations = rememberEhNavAnim()), navController = navController, ) } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt index d999fe2a7..e0ea4bd97 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt @@ -2,9 +2,6 @@ package com.hippo.ehviewer.ui import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.animation.core.tween -import androidx.compose.animation.fadeIn -import androidx.compose.animation.fadeOut import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @@ -16,6 +13,9 @@ import com.hippo.ehviewer.ui.tools.DialogState import com.hippo.ehviewer.ui.tools.LocalDialogState import com.hippo.ehviewer.ui.tools.ProvideVectorPainterCache import com.ramcosta.composedestinations.animations.defaults.RootNavGraphDefaultAnimations +import soup.compose.material.motion.animation.materialSharedAxisXIn +import soup.compose.material.motion.animation.materialSharedAxisXOut +import soup.compose.material.motion.animation.rememberSlideDistance inline fun ComposeView.setMD3Content(crossinline content: @Composable () -> Unit) = setContent { EhTheme { @@ -45,9 +45,15 @@ inline fun ComponentActivity.setMD3Content(crossinline content: @Composable () - } } -val ehNavAnim by lazy { - RootNavGraphDefaultAnimations( - enterTransition = { fadeIn(animationSpec = tween(500)) }, - exitTransition = { fadeOut(animationSpec = tween(500)) }, - ) +@Composable +fun rememberEhNavAnim(): RootNavGraphDefaultAnimations { + val slideDistance = rememberSlideDistance() + return remember { + RootNavGraphDefaultAnimations( + enterTransition = { materialSharedAxisXIn(true, slideDistance) }, + exitTransition = { materialSharedAxisXOut(true, slideDistance) }, + popEnterTransition = { materialSharedAxisXIn(false, slideDistance) }, + popExitTransition = { materialSharedAxisXOut(false, slideDistance) }, + ) + } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 61d993c92..ee44f8bf8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -77,6 +77,8 @@ compose-ui-util = { module = "androidx.compose.ui:ui-util" } compose-destinations-core = { module = "io.github.raamcosta.compose-destinations:core", version.ref = "compose-destinations" } compose-destinations-compiler = { module = "io.github.raamcosta.compose-destinations:ksp", version.ref = "compose-destinations" } +material-motion-core = "io.github.fornewid:material-motion-compose-core:1.1.0" + cronet-api = "org.chromium.net:cronet-api:113.5672.61" cronet-gms = "com.google.android.gms:play-services-cronet:18.0.1"