Android Transition 中何时调用 captureStartValues 和 captureEndValues?

When are captureStartValues and captureEndValues called in Android Transition?

我正在使用 自定义过渡动画 制作片段动画。为此,我对 Transition 进行了子类化,当创建片段视图时,我分别使用 Transition 子类分配 enterTransitionexitTransition。我看到过渡正在发生但没有动画。我通过在 captureStartValuescaptureEndValues 中放置断点来调试它,但它从未被调用过。我想知道这些函数究竟是什么时候被调用的?我的开始值和结束值是动态计算的,我不太确定如何将它们传递给 Transition,或者我应该如何将它们分配给视图以使 transition 捕获它们?

自己回答:

我对 Android 自己的转换进行了更深入的调试,发现回调 captureStartValuescaptureEndValues 都不会在一个动画中发生。 captureStartValues 将调用片段退出动画 captureEndValues 将调用片段进入动画。例如:

incomingFragment.apply {
    this.exitTransition = Slide(Gravity.TOP) // This will use 'captureEndValues' in Slide Transition
}
fragmentManager.beginTransation() { ... } // Will invoke the call

过渡的起始值将是视图的当前位置。尽管您可以使用一些计算来设置转换中的起始值。