【问题标题】:When are captureStartValues and captureEndValues called in Android Transition?什么时候在 Android Transition 中调用 captureStartValues 和 captureEndValues?
【发布时间】:2020-08-31 18:12:12
【问题描述】:
我正在使用自定义过渡动画为片段制作动画。为此,我对 Transition 进行了子类化,并在创建 Fragment 视图时分别使用 Transition 子类分配 enterTransition 和 exitTransition。我看到过渡发生但没有动画。我通过在captureStartValues 和captureEndValues 中放置断点来调试它,但它从未被调用过。我想了解何时调用这些函数?我的开始和结束值是动态计算的,我不太确定如何将它们传递给 Transition,或者我应该如何将它们分配给视图以使转换捕获它们?
【问题讨论】:
标签:
android
android-fragments
android-animation
android-transitions
【解决方案1】:
回答我自己:
我使用 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
过渡的起始值将是视图的当前位置。虽然您可以通过一些计算来设置过渡中的起始值。