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 169a68708..c3ab2d9f7 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -26,7 +26,6 @@ import android.net.Uri import android.os.Bundle import android.widget.Toast import androidx.annotation.StringRes -import androidx.compose.animation.SharedTransitionLayout import androidx.compose.animation.SharedTransitionScope import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.Image @@ -138,6 +137,7 @@ import com.hippo.ehviewer.ui.tools.DialogState import com.hippo.ehviewer.ui.tools.LabeledCheckbox import com.hippo.ehviewer.ui.tools.LocalDialogState import com.hippo.ehviewer.ui.tools.LocalWindowSizeClass +import com.hippo.ehviewer.ui.tools.NoopSharedTransitionScope import com.hippo.ehviewer.updater.AppUpdater import com.hippo.ehviewer.util.AppConfig import com.hippo.ehviewer.util.addTextToClipboard @@ -463,16 +463,17 @@ class MainActivity : EhActivity() { drawerState = sideSheetState, gesturesEnabled = sheet != null && drawerEnabled, ) { - SharedTransitionLayout { - CompositionLocalProvider(LocalSharedTransitionScope provides this) { - DestinationsNavHost( - navGraph = NavGraphs.root, - start = if (Settings.needSignIn) SignInScreenDestination else StartDestination, - defaultTransitions = rememberEhNavAnim(), - navController = navController, - ) - } + // https://issuetracker.google.com/336140982 + // SharedTransitionLayout { + CompositionLocalProvider(LocalSharedTransitionScope provides NoopSharedTransitionScope) { + DestinationsNavHost( + navGraph = NavGraphs.root, + start = if (Settings.needSignIn) SignInScreenDestination else StartDestination, + defaultTransitions = rememberEhNavAnim(), + navController = navController, + ) } + // } } } } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/EhAsyncThumb.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/EhAsyncThumb.kt index f61c35f7b..7eded398d 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/main/EhAsyncThumb.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/main/EhAsyncThumb.kt @@ -19,7 +19,6 @@ import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.ktbuilder.imageRequest import com.hippo.ehviewer.ui.tools.SETNodeGenerator import com.hippo.ehviewer.ui.tools.TransitionsVisibilityScope -import com.hippo.ehviewer.ui.tools.sharedBounds import com.hippo.ehviewer.ui.tools.shouldCrop @Composable @@ -40,7 +39,9 @@ fun EhAsyncThumb( ) = AsyncImage( model = requestOf(model), contentDescription = null, - modifier = modifier.sharedBounds(key = "${model.gid}").clip(ShapeDefaults.Medium), + modifier = modifier + // .sharedBounds(key = "${model.gid}") + .clip(ShapeDefaults.Medium), onSuccess = onSuccess?.let { callback -> { callback(it.result.image) } }, @@ -57,7 +58,9 @@ fun EhAsyncCropThumb( AsyncImage( model = requestOf(key), contentDescription = null, - modifier = modifier.sharedBounds(key = "${key.gid}").clip(ShapeDefaults.Medium), + modifier = modifier + // .sharedBounds(key = "${key.gid}") + .clip(ShapeDefaults.Medium), onSuccess = { if (it.result.image.shouldCrop) { contentScale = ContentScale.Crop diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/SharedElementTransition.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/SharedElementTransition.kt index a02dc30d7..38ba6a647 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/SharedElementTransition.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/SharedElementTransition.kt @@ -1,6 +1,7 @@ package com.hippo.ehviewer.ui.tools import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.BoundsTransform import androidx.compose.animation.EnterTransition import androidx.compose.animation.ExitTransition import androidx.compose.animation.SharedTransitionScope @@ -11,6 +12,12 @@ import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.Stable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.layout.LayoutCoordinates +import androidx.compose.ui.layout.Placeable +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.LayoutDirection import arrow.atomic.AtomicInt val NoopTransitionsVisibilityScope = TransitionsVisibilityScope(emptySet()) @@ -80,3 +87,74 @@ class SETNodeGenerator { other.opposites.add(this) } } + +object NoopSharedTransitionScope : SharedTransitionScope { + override val isTransitionActive: Boolean + get() = TODO("Not yet implemented") + override val Placeable.PlacementScope.lookaheadScopeCoordinates: LayoutCoordinates + get() = TODO("Not yet implemented") + + override fun OverlayClip(clipShape: Shape): SharedTransitionScope.OverlayClip { + TODO("Not yet implemented") + } + + @Composable + override fun rememberSharedContentState(key: Any): SharedTransitionScope.SharedContentState { + TODO("Not yet implemented") + } + + override fun Modifier.renderInSharedTransitionScopeOverlay( + renderInOverlay: () -> Boolean, + zIndexInOverlay: Float, + clipInOverlayDuringTransition: (LayoutDirection, Density) -> Path?, + ): Modifier { + TODO("Not yet implemented") + } + + override fun Modifier.sharedBounds( + sharedContentState: SharedTransitionScope.SharedContentState, + animatedVisibilityScope: AnimatedVisibilityScope, + enter: EnterTransition, + exit: ExitTransition, + boundsTransform: BoundsTransform, + resizeMode: SharedTransitionScope.ResizeMode, + placeHolderSize: SharedTransitionScope.PlaceHolderSize, + renderInOverlayDuringTransition: Boolean, + zIndexInOverlay: Float, + clipInOverlayDuringTransition: SharedTransitionScope.OverlayClip, + ): Modifier { + TODO("Not yet implemented") + } + + override fun Modifier.sharedElement( + state: SharedTransitionScope.SharedContentState, + animatedVisibilityScope: AnimatedVisibilityScope, + boundsTransform: BoundsTransform, + placeHolderSize: SharedTransitionScope.PlaceHolderSize, + renderInOverlayDuringTransition: Boolean, + zIndexInOverlay: Float, + clipInOverlayDuringTransition: SharedTransitionScope.OverlayClip, + ): Modifier { + TODO("Not yet implemented") + } + + override fun Modifier.sharedElementWithCallerManagedVisibility( + sharedContentState: SharedTransitionScope.SharedContentState, + visible: Boolean, + boundsTransform: BoundsTransform, + placeHolderSize: SharedTransitionScope.PlaceHolderSize, + renderInOverlayDuringTransition: Boolean, + zIndexInOverlay: Float, + clipInOverlayDuringTransition: SharedTransitionScope.OverlayClip, + ): Modifier { + TODO("Not yet implemented") + } + + override fun Modifier.skipToLookaheadSize(): Modifier { + TODO("Not yet implemented") + } + + override fun LayoutCoordinates.toLookaheadCoordinates(): LayoutCoordinates { + TODO("Not yet implemented") + } +}