diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d44540ec..2b74e0df 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,8 +4,10 @@
-
+
@@ -19,6 +21,7 @@
= emptyList(),
- deepLinks: List = emptyList(),
- content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit
-) = composable(
+ route: String,
+ arguments: List = emptyList(),
+ deepLinks: List = emptyList(),
+ usePredictiveBack: Boolean = Build.VERSION.SDK_INT >= 34,
+ content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit,
+) {
+ if (usePredictiveBack) {
+ animatedComposablePredictiveBack(route, arguments, deepLinks, content)
+ } else {
+ animatedComposableLegacy(route, arguments, deepLinks, content)
+ }
+}
+
+fun NavGraphBuilder.animatedComposablePredictiveBack(
+ route: String,
+ arguments: List = emptyList(),
+ deepLinks: List = emptyList(),
+ content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit,
+) =
+ composable(
route = route,
arguments = arguments,
deepLinks = deepLinks,
- enterTransition = {
- materialSharedAxisXIn(initialOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
- },
+ enterTransition = { materialSharedAxisXIn(initialOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() }) },
exitTransition = {
materialSharedAxisXOut(targetOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
},
popEnterTransition = {
- materialSharedAxisXIn(initialOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
+ scaleIn(
+ animationSpec = tween(durationMillis = 350, easing = EmphasizedDecelerate),
+ initialScale = INITIAL_SCALE_FACTOR,
+ ) + materialSharedAxisXIn(initialOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
},
popExitTransition = {
- materialSharedAxisXOut(targetOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
+ materialSharedAxisXOut(targetOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() }) +
+ scaleOut(
+ targetScale = INITIAL_SCALE_FACTOR,
+ animationSpec = tween(durationMillis = 350, easing = EmphasizedAccelerate),
+ )
},
- content = content
+ content = content,
+ )
+
+fun NavGraphBuilder.animatedComposableLegacy(
+ route: String,
+ arguments: List = emptyList(),
+ deepLinks: List = emptyList(),
+ content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit
+) = composable(
+ route = route,
+ arguments = arguments,
+ deepLinks = deepLinks,
+ enterTransition = {
+ materialSharedAxisXIn(initialOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
+ },
+ exitTransition = {
+ materialSharedAxisXOut(targetOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
+ },
+ popEnterTransition = {
+ materialSharedAxisXIn(initialOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
+ },
+ popExitTransition = {
+ materialSharedAxisXOut(targetOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
+ },
+ content = content
)
diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt
index fae4b522..63163fcf 100644
--- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt
+++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt
@@ -204,9 +204,6 @@ fun FeedsPage(
}
}
- BackHandler(true) {
- context.findActivity()?.moveTaskToBack(false)
- }
RYScaffold(
topBarTonalElevation = topBarTonalElevation.value.dp,