问题描述
我做了一个简单的例子来证明 ActivityOptions.makeSceneTransitionAnimation(activity)
有问题。
我有 3 个活动:A、B 和 C。 流程很简单:A -> B -> C
所有活动都具有相同的风格:
<style name="TransitionsTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="android:windowEnterTransition">@transition/slide_in_from_bottom</item>
<item name="android:windowExitTransition">@transition/slide_out_to_bottom</item>
</style>
每当我去的时候:A -> B -> C -> B (back button) -> A (back button)
最后一个动画(A -> C)
没有播放。
只做 A -> B -> A (back button)
这是我开始活动的方式:
fun start(activity: Activity) {
val intent = Intent(activity,TransitionActivityA::class.java) //or B or C
val transitionsOptions = ActivityOptions.makeSceneTransitionAnimation(activity)
activity.startActivity(intent,transitionsOptions.toBundle())
}
展示问题的应用:https://github.com/jkwiecien/AndroidCaseStudies/tree/transitions
使用分支 transitions
这是 Android 错误还是我做错了什么?
解决方法
它不起作用,因为ActivityB
是由ActivityC
“启动”的,而它确实可以转换到ActivityB
,因为ActivityC
是由它启动的。
似乎您必须使用反向 onBackPressed()
手动覆盖 ActivityA
并从 ActivityB
开始 ActivityOptions
。这样做的唯一方法是在 overridePendingTransition()
之后调用 finish()
。