当我从活动A启动活动B时,我正在使用自定义共享元素转换。一切都运行良好。
我想使用另一个自定义Transition
,它不涉及从活动B返回到活动A的任何共享元素。但是,我遇到了几个部分的问题:
感谢我能得到的任何帮助!
编辑:
进一步的调查显示,即使我正在呼叫createAnimator
,我的回复转换setSharedElementReturnTransition
甚至都没有被调用。但我知道set调用正在做某事,因为它现在不会尝试反转原始的输入动画(默认行为)而不是仅重叠两个视图。
编辑#2:
在看了乔治·芒的回答之后,我补充说了
@Override
public void captureStartValues(TransitionValues transitionValues) {
transitionValues.view.setVisibility(View.VISIBLE);
}
@Override
public void captureEndValues(TransitionValues transitionValues) {
transitionValues.view.setVisibility(View.INVISIBLE);
}
现在这导致我的返回转换createAnimator
至少运行,尽管动画仍然很奇怪。为什么能见度很重要?
答案 0 :(得分:2)
返回转换:通过更改其可见性,从活动B中的场景中删除非共享元素。
共享元素返回转换:活动B中的共享元素从调用finishAfterTransition
时的位置开始,并在活动A表示共享元素的位置结束。这可以通过SharedElementCallback
的{{1}}和onSharedElementStart
进行调整,这些内容在返回时会被反向调用。
重新过渡:活动A中的非共享元素视图会更改其可见性。
共享元素重新转换:通常没有,但共享元素在进入活动A后可以执行一些特殊操作。
答案 1 :(得分:2)
我实际上发现导致我的返回过渡的罪魁祸首#{1}}无法运行。显然,如果转换框架认为转换视图的起始和结束状态相同,则不会创建动画师。因此,在createAnimator
和captureStartState
中添加一些虚拟但不同的值最终会导致我的返回转换正常运行。