Android 理解活动返回转换
当我从活动a启动活动B时,我目前正在使用自定义共享元素转换。一切都很完美 我想使用另一个自定义的Android 理解活动返回转换,android,android-transitions,activity-transition,Android,Android Transitions,Activity Transition,当我从活动a启动活动B时,我目前正在使用自定义共享元素转换。一切都很完美 我想使用另一个自定义的转换,它不涉及从活动B返回到活动A的返回转换的任何共享元素。但是,我在几个部分遇到了问题: 我如何告诉框架返回转换不涉及任何共享元素 返回转换中转换的起始值和结束值是什么?对于enter转换,我主要操纵活动B的视图,因为它们是在活动A的顶部绘制的。在返回转换中会发生什么 谢谢你给我的任何帮助 编辑: 进一步的调查显示,即使我正在调用setSharedElementReturnTransition,我的
转换
,它不涉及从活动B返回到活动A的返回转换的任何共享元素。但是,我在几个部分遇到了问题:
setSharedElementReturnTransition
,我的返回转换的createAnimator
也没有被调用。但是我知道set调用正在做一些事情,因为它现在不尝试反转原始的enter动画(默认行为),而只是重叠两个视图
编辑#2:
在看了乔治·蒙特的答案后,我补充道
@Override
public void captureStartValues(TransitionValues transitionValues) {
transitionValues.view.setVisibility(View.VISIBLE);
}
@Override
public void captureEndValues(TransitionValues transitionValues) {
transitionValues.view.setVisibility(View.INVISIBLE);
}
这导致我的返回转换的createAnimator
至少运行了,尽管动画仍然很奇怪。为什么能见度很重要
finishAfterTransition
时的位置开始,并在活动A显示共享元素的位置结束。这可以通过SharedElementStart和SharedElementEnd上的SharedElementCallback
进行调整,在返回过程中反向调用
重新输入转换:活动A中的非共享元素视图更改其可见性
共享元素重新进入转换:通常什么都不做,但共享元素在进入活动A后可以做一些特殊的事情。我实际上找到了导致返回转换的
createAnimator
无法运行的罪魁祸首。显然,如果转换框架认为转换视图的开始和结束状态是相同的,它将不会创建动画。因此,在captureStartState
和captureEndState
中添加一些虚拟但不同的值,最终导致我的返回转换正常运行。如果我清除共享元素映射,这不会也从我的输入转换中删除共享元素转换吗?我只想将其从返回转换中删除。您还可以澄清返回/重新输入“更改其可见性”吗?如果我想做一些定制的事情,比如为返回转换滑出元素,那么可见性与任何事情都有什么关系?对于第一个问题,是的。但是,当您离开或使用不同的逻辑时,可以设置不同的SharedElementCallback。WRT可见性:滑动、分解和淡入过渡都是可见性过渡(检查继承性),并响应可见性和缺勤的更改。如果你想定制一些东西,也可以从可见性派生你的类。谢谢你的帮助!我现在对转换有了更好的理解:)我实际上找到了导致我的bug的罪魁祸首,我将在这里添加一个答案。这是赏金!