我使用ActivityOptions.makeSceneTransitionAnimation
在活动之间进行转换。我以编程方式创建自定义Transitions
,并使用window.enterTransition
和window.exitTransition
进行设置。
我的活动堆栈如下所示:
A (transition1) ---> B1 (transition2) ---> B2
现在我想从B2
返回A
transition1
,就像我从B1
返回一样。所以我希望用FLAG_ACTIVITY_SINGLE_TOP
清除活动堆栈并将A
放在前面。遗憾的是,B2
的退出动画无效,活动A
刚刚以默认动画启动。
我附加了监听器,看看exitTransition
是否已启动,看起来它已经启动但是在一段时间后被取消了。另外,我尝试启动Activity A
而不用标记只是为了检查我是否正确设置了转换,并且一切正常。
因此,当我使用FLAG_ACTIVITY_SINGLE_TOP
时,似乎没有B2
完成了活动exitTransition
。有没有人遇到类似的问题?我知道,我可以在开始B1
之前完成B2
然后,而不是使用CLEAR_TOP
启动A,我可以完成B2
。但是,这非常不方便和肮脏,因为我必须手动管理输入,返回,重新输入等B1
和B2
之间的转换,所以我想确保没有其他解决方案。
我还看到了overridePendingTransitions
的解决方案。这些不适合,因为此方法只允许使用xml中定义的转换,但我有自定义转换,只能以编程方式设置。