如何防止反向共享元素过渡

9

我有一个小问题。

我有一个带有列表的片段A和一个带有列表的活动B。 现在A和B有一个共同的图像,所以我设置了一个共享元素转换,在从A到B的过程中它起作用。

但是如果我按返回按钮,我不想有相反的转换。 所以我在B中不调用supportFinishAfterTransition而是调用finish。但现在有一些丑陋的动画:

B通常会消失,除了图像。图像会保持在前景中,直到A在后台可见,然后消失。

我该如何防止这种情况发生?我想要正常的行为,就像我调用finishonBackPressed一样。

问候

2个回答

8

我找到了一个解决方案。

我稍微试了一下,如果你重写onBackPressed()并调用finish()而不是super.onBackPressed(),这样就可以了。


支持库版本为27.1.1,我必须使用finish()来禁用共享元素转换并返回到A。 - hedzr
嘿,看看我的答案。重写finishAfterTransition()更加简洁。 - guy_m

6

我刚刚遇到了这个问题,有一个更简洁的解决方案...

只需覆盖finishAfterTransition()即可。你的基类中可能有一个布尔值,所以代码应该是这样的:

final override fun finishAfterTransition() {
    if (myShouldAllowReverseTransitionsBoolean) {
        super.finishAfterTransition()
    } else {
        super.finish()
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接