【发布时间】:2021-06-02 09:30:52
【问题描述】:
我做了一个简单的例子来证明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 错误还是我做错了什么?
【问题讨论】:
-
您是否尝试通过调用
overridePendingTransition()方法来覆盖Activity 的onBackPressed?喜欢这个问题的答案:stackoverflow.com/questions/28512662/… -
A -> B -> C -> B (back button) -> A (back button)- 这是什么意思?从C到B->back button到A->back button到(预期)C???或从C->back button到B->back buttton到A???无论如何,this post 可能会对您有所帮助。 -
似乎在模拟器上运行良好(api 24 和 api 27),它是特定于某些 Android API 的吗?
-
是的,在我的情况下,它不适用于 API 30,但适用于 23 和 24。
-
Launchmode 有时会与 Transitions 混淆,如果您使用的不是默认的可能是它的来源
标签: android android-animation android-support-library android-transitions