跨活动的片段之间的共享元素转换不一致
Posted
技术标签:
【中文标题】跨活动的片段之间的共享元素转换不一致【英文标题】:Shared element transition between fragments across activities not consistent 【发布时间】:2016-11-18 09:18:36 【问题描述】:我有两个活动 A1 和 A2。 A1 有一个片段 F1,A2 有一个片段 F2。当用户点击片段 F1 时,它会调用默认加载片段 F2 的 Activity A2。这就是流量。现在我在片段 f1 和 f2 之间有了一个共享视图。我跟着this link 实现了共享元素转换,它可以工作,但只是有时。跨片段的共享元素转换不一致。返回转换按预期发生,但输入转换并不总是有效。
我哪里错了?我应该在哪里设置setSharedElementEnterTransition()
和setSharedElementReturnTransition()
?
【问题讨论】:
【参考方案1】:我可能对这个答案有误,但请随意尝试:
我的假设是您在 onCreateView
方法上设置 setSharedElementEnterTransition()
和 setSharedElementReturnTransition()
在某些情况下是可以的,但是如果您遵循完整的活动生命周期 (you can check it here) 您会注意到在某些情况下例如:在您 A1 暂停或停止之后,您的 Fragment1 代码将从您的片段上的 onStart
或 onResume
执行,而不是您可能期望的从 onCreateView
执行。所以你的setSharedElementEnterTransition()
没有被执行。
出于这个原因,我认为返回转换总是有效的,因为在调用 onStop 方法时会调用它。这里的问题是,在这种情况下,shareElement 转换有点复杂,因为您混合了 4 个活动生命周期。我必须对此进行一些研究,但我认为这可能是原因。希望对您有所帮助。
【讨论】:
以上是关于跨活动的片段之间的共享元素转换不一致的主要内容,如果未能解决你的问题,请参考以下文章