Android Transition 中何时调用 captureStartValues 和 captureEndValues?
When are captureStartValues and captureEndValues called in Android Transition?
我正在使用 自定义过渡动画 制作片段动画。为此,我对 Transition 进行了子类化,当创建片段视图时,我分别使用 Transition
子类分配 enterTransition
和 exitTransition
。我看到过渡正在发生但没有动画。我通过在 captureStartValues
和 captureEndValues
中放置断点来调试它,但它从未被调用过。我想知道这些函数究竟是什么时候被调用的?我的开始值和结束值是动态计算的,我不太确定如何将它们传递给 Transition,或者我应该如何将它们分配给视图以使 transition 捕获它们?
自己回答:
我对 Android 自己的转换进行了更深入的调试,发现回调 captureStartValues
和 captureEndValues
都不会在一个动画中发生。 captureStartValues
将调用片段退出动画 captureEndValues
将调用片段进入动画。例如:
incomingFragment.apply {
this.exitTransition = Slide(Gravity.TOP) // This will use 'captureEndValues' in Slide Transition
}
fragmentManager.beginTransation() { ... } // Will invoke the call
过渡的起始值将是视图的当前位置。尽管您可以使用一些计算来设置转换中的起始值。
我正在使用 自定义过渡动画 制作片段动画。为此,我对 Transition 进行了子类化,当创建片段视图时,我分别使用 Transition
子类分配 enterTransition
和 exitTransition
。我看到过渡正在发生但没有动画。我通过在 captureStartValues
和 captureEndValues
中放置断点来调试它,但它从未被调用过。我想知道这些函数究竟是什么时候被调用的?我的开始值和结束值是动态计算的,我不太确定如何将它们传递给 Transition,或者我应该如何将它们分配给视图以使 transition 捕获它们?
自己回答:
我对 Android 自己的转换进行了更深入的调试,发现回调 captureStartValues
和 captureEndValues
都不会在一个动画中发生。 captureStartValues
将调用片段退出动画 captureEndValues
将调用片段进入动画。例如:
incomingFragment.apply {
this.exitTransition = Slide(Gravity.TOP) // This will use 'captureEndValues' in Slide Transition
}
fragmentManager.beginTransation() { ... } // Will invoke the call
过渡的起始值将是视图的当前位置。尽管您可以使用一些计算来设置转换中的起始值。