From 7f5e5250ad7f4e650b792ae89acafce061327faa Mon Sep 17 00:00:00 2001 From: BinTianqi Date: Mon, 6 May 2024 18:35:00 +0800 Subject: [PATCH] optimize animations --- .../com/bintianqi/owndroid/MainActivity.kt | 2 -- .../com/bintianqi/owndroid/ui/Animations.kt | 34 ++++++++----------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt index b35ca4e..6686dd9 100644 --- a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt +++ b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt @@ -48,7 +48,6 @@ import com.bintianqi.owndroid.ui.theme.bgColor import kotlinx.coroutines.delay var backToHome = false -lateinit var displayMetrics: DisplayMetrics @ExperimentalMaterial3Api class MainActivity : ComponentActivity() { private fun registerActivityResult(){ @@ -75,7 +74,6 @@ class MainActivity : ComponentActivity() { WindowCompat.setDecorFitsSystemWindows(window, false) super.onCreate(savedInstanceState) registerActivityResult() - displayMetrics = applicationContext.resources.displayMetrics setContent { OwnDroidTheme { MyScaffold() diff --git a/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt b/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt index 4ba6ea4..9c6fdb1 100644 --- a/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt +++ b/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt @@ -1,56 +1,50 @@ package com.bintianqi.owndroid.ui import androidx.compose.animation.* -import androidx.compose.animation.core.FiniteAnimationSpec -import androidx.compose.animation.core.Spring -import androidx.compose.animation.core.VisibilityThreshold -import androidx.compose.animation.core.spring +import androidx.compose.animation.core.* import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntSize import androidx.navigation.NavBackStackEntry -import com.bintianqi.owndroid.displayMetrics class Animations{ - private val fade: FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow) - private val spring:FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow, visibilityThreshold = IntOffset.VisibilityThreshold) - val animateListSize:FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow, visibilityThreshold = IntSize.VisibilityThreshold) - - private val screenWidth = displayMetrics.widthPixels - private val initialOffsetValue = screenWidth/10 - private val targetOffsetValue = screenWidth/10 + + private val initialOffsetValue = 96 + private val targetOffsetValue = 96 + + private val bezier = CubicBezierEasing(0.3f, 0f, 0f, 1f) + + private val tween: FiniteAnimationSpec = tween(450, easing = bezier) val navHostEnterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { - fadeIn(animationSpec = fade) + + fadeIn(tween(83, easing = LinearEasing)) + slideIntoContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.End, initialOffset = {initialOffsetValue} ) } val navHostExitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { - fadeOut(animationSpec = fade) + slideOutOfContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.Start, targetOffset = {-targetOffsetValue} ) } val navHostPopEnterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { - fadeIn(animationSpec = fade) + slideIntoContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.End, initialOffset = {-initialOffsetValue} ) } val navHostPopExitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { - fadeOut(animationSpec = fade) + + fadeOut(tween(83, easing = LinearEasing)) + slideOutOfContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.Start, targetOffset = {targetOffsetValue} )