我做了一个简单的例子来证明ActivityOptions.makeSceneTransitionAnimation(activity)
有问题.
我有 3 个 Activity :A、B 和 C。
流程很简单:A -> B -> C
所有 Activity 都具有相同的风格:
<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)
时效果很好以下是我开始 Activity 的方式:
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()
之后.
关于返回 2 个屏幕时,Android Activity 返回过渡刹车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67802482/