fix(stats): significantly improve stats screen performance
This commit is contained in:
@@ -23,6 +23,7 @@ import androidx.compose.animation.EnterTransition
|
||||
import androidx.compose.animation.ExitTransition
|
||||
import androidx.compose.animation.SharedTransitionDefaults
|
||||
import androidx.compose.animation.SharedTransitionScope
|
||||
import androidx.compose.animation.SharedTransitionScope.ResizeMode.Companion.scaleToBounds
|
||||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
|
||||
@@ -30,6 +31,7 @@ import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.navigation3.ui.LocalNavAnimatedContentScope
|
||||
|
||||
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
|
||||
@@ -41,12 +43,14 @@ fun Modifier.sharedBoundsReveal(
|
||||
boundsTransform: BoundsTransform = SharedTransitionDefaults.BoundsTransform,
|
||||
enter: EnterTransition = fadeIn(),
|
||||
exit: ExitTransition = fadeOut(),
|
||||
resizeMode: SharedTransitionScope.ResizeMode = SharedTransitionScope.ResizeMode.RemeasureToBounds,
|
||||
resizeMode: SharedTransitionScope.ResizeMode = scaleToBounds(
|
||||
contentScale = ContentScale.Crop
|
||||
),
|
||||
clipShape: Shape = MaterialTheme.shapes.largeIncreased,
|
||||
renderInOverlayDuringTransition: Boolean = true,
|
||||
): Modifier {
|
||||
): Modifier =
|
||||
with(sharedTransitionScope) {
|
||||
return this@sharedBoundsReveal
|
||||
this@sharedBoundsReveal
|
||||
.sharedBounds(
|
||||
sharedContentState = sharedContentState,
|
||||
animatedVisibilityScope = animatedVisibilityScope,
|
||||
@@ -57,7 +61,4 @@ fun Modifier.sharedBoundsReveal(
|
||||
clipInOverlayDuringTransition = OverlayClip(clipShape),
|
||||
renderInOverlayDuringTransition = renderInOverlayDuringTransition,
|
||||
)
|
||||
// .skipToLookaheadSize()
|
||||
// .skipToLookaheadPosition()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ fun SharedTransitionScope.LastMonthScreen(
|
||||
context.model.extraStore[lastMonthSummaryChartData.second][x.toInt()]
|
||||
},
|
||||
modifier = Modifier
|
||||
.sharedElement(
|
||||
.sharedBounds(
|
||||
sharedContentState = this@LastMonthScreen
|
||||
.rememberSharedContentState("last month chart"),
|
||||
animatedVisibilityScope = LocalNavAnimatedContentScope.current
|
||||
|
||||
@@ -215,7 +215,7 @@ fun SharedTransitionScope.LastWeekScreen(
|
||||
context.model.extraStore[mainChartData.second][x.toInt()]
|
||||
},
|
||||
modifier = Modifier
|
||||
.sharedElement(
|
||||
.sharedBounds(
|
||||
sharedContentState = this@LastWeekScreen
|
||||
.rememberSharedContentState("last week chart"),
|
||||
animatedVisibilityScope = LocalNavAnimatedContentScope.current
|
||||
|
||||
@@ -223,7 +223,7 @@ fun SharedTransitionScope.LastYearScreen(
|
||||
},
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 16.dp)
|
||||
.sharedElement(
|
||||
.sharedBounds(
|
||||
sharedContentState = this@LastYearScreen
|
||||
.rememberSharedContentState("last year chart"),
|
||||
animatedVisibilityScope = LocalNavAnimatedContentScope.current
|
||||
|
||||
@@ -290,7 +290,7 @@ fun SharedTransitionScope.StatsMainScreen(
|
||||
context.model.extraStore[lastWeekSummaryChartData.second][x.toInt()]
|
||||
},
|
||||
modifier = Modifier
|
||||
.sharedElement(
|
||||
.sharedBounds(
|
||||
sharedContentState = this@StatsMainScreen
|
||||
.rememberSharedContentState("last week chart"),
|
||||
animatedVisibilityScope = LocalNavAnimatedContentScope.current
|
||||
@@ -374,7 +374,7 @@ fun SharedTransitionScope.StatsMainScreen(
|
||||
context.model.extraStore[lastMonthSummaryChartData.second][x.toInt()]
|
||||
},
|
||||
modifier = Modifier
|
||||
.sharedElement(
|
||||
.sharedBounds(
|
||||
sharedContentState = this@StatsMainScreen
|
||||
.rememberSharedContentState("last month chart"),
|
||||
animatedVisibilityScope = LocalNavAnimatedContentScope.current
|
||||
@@ -457,7 +457,7 @@ fun SharedTransitionScope.StatsMainScreen(
|
||||
context.model.extraStore[lastYearSummaryChartData.second][x.toInt()]
|
||||
},
|
||||
modifier = Modifier
|
||||
.sharedElement(
|
||||
.sharedBounds(
|
||||
sharedContentState = this@StatsMainScreen
|
||||
.rememberSharedContentState("last year chart"),
|
||||
animatedVisibilityScope = LocalNavAnimatedContentScope.current
|
||||
|
||||
Reference in New Issue
Block a user