返回 2 个屏幕时,Android 活动返回转换刹车

Jac*_*ień 6 android android-animation android-support-library android-transitions

我做了一个简单的例子来证明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>
Run Code Online (Sandbox Code Playgroud)

每当我去:不播放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())
        }
Run Code Online (Sandbox Code Playgroud)

演示该问题的应用程序:https : //github.com/jkwiecien/AndroidCaseStudies/tree/transitions 使用分支transitions

这是Android错误还是我做错了什么?

Cac*_*oot -1

它不起作用,因为ActivityB是由 启动的ActivityC,而它确实可以过渡到ActivityB,因为ActivityC是由它启动的。

看来您必须使用反向来覆盖并手动onBackPressed()启动。唯一的方法是调用after 。ActivityAActivityBActivityOptionsoverridePendingTransition()finish()