Jetpack 组合前瞻范围

问题描述 投票:0回答:0

我正在尝试实现 LazyVerticalGrid 和 Column 可组合项之间的共享元素转换

SceneHost(modifier = Modifier.fillMaxSize()) {
        if (isTransformed.value) {
            Column(
                modifier = Modifier.fillMaxSize(),
                verticalArrangement = Arrangement.Center,
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
                movableItems(selectedIndex.value) {
                }

            }
        } else {
            LazyVerticalGrid(
                columns = GridCells.Fixed(4),
                state = state
                //modifier = Modifier.fillMaxSize()
            ) {
                items(
                    key = { colors[it].value.toString() },
                    count = colors.size,
                    itemContent = { index ->
                        movableItems(index) {
                        }

                    })
            }
        }
    }

SceneHost 是 LookaheadScope 的包装器,它是从 LookaheadScope 示例中克隆的

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/动画/演示/前瞻/SceneHostExperiment.kt

这是网格的样子

box grid

具有扩展尺寸的元素不会转换并抛出

java.lang.IllegalStateException: Check failed.
                                                                                                        at androidx.compose.ui.focus.FocusInvalidationManager$invalidateNodes$1.invoke(FocusInvalidationManager.kt:145)
                                                                                                        at androidx.compose.ui.focus.FocusInvalidationManager$invalidateNodes$1.invoke(FocusInvalidationManager.kt:62)
                                                                                                        at androidx.compose.ui.platform.AndroidComposeView.onEndApplyChanges(AndroidComposeView.android.kt:693)
                                                                                                        at androidx.compose.ui.node.UiApplier.onEndChanges(UiApplier.android.kt:48)
                                                                                                        at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:818)
                                                                                                        at androidx.compose.runtime.CompositionImpl.applyLateChanges(Composition.kt:856)
                                                                                                        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:607)
                                                                                                        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:510)
                                                                                                        at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
                                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
                                                                                                        at android.view.Choreographer.doCallbacks(Choreographer.java:761)
                                                                                                        at android.view.Choreographer.doFrame(Choreographer.java:693)
                                                                                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:873)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        at android.os.Looper.loop(Looper.java:193)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:6669)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
                                                                                                        Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@9032efb, androidx.compose.ui.platform.MotionDurationScaleImpl@fcdab18, StandaloneCoroutine{Cancelling}@1435971, AndroidUiDispatcher@d53b356]

这里是过渡

first element transitions

并且元素没有从它们的坐标开始转换

other element transitions

kotlin android-layout android-jetpack-compose android-animation android-jetpack
© www.soinside.com 2019 - 2024. All rights reserved.