0

我会尽力解释我的问题。

在我搜索在哪里注册/取消注册我的 ContentObserver 时,我看到多个答案说它应该在 onResume / onPause 或 onStart / onStop 但不在 onCreate / onDestroy 中。假设我在 onStart / onStop 中注册/取消注册,以确保我的视图仍然使用新数据进行更新,我获取数据然后在注册 ContentObserver 之前在 onStart 方法中刷新我的视图。

一切正常,直到... SharedElement 与 Material Design 过渡。

因为Imagine Activity A 注册到Data-A 并在onStart 中刷新数据所以View。当用户触摸一个项目时,它会对这个项目的细节运行一个 SharedElement 动画:Activity B with Data-A[n]

问题是当我从活动 B 回到活动 A 时,由于数据的刷新,我的列表中的原始项目不再存在,并且我的动画没有所需的行为。

你对此有什么想法吗?

4

1 回答 1

0

如果原始数据被替换,那么您不应该使用共享元素转换本身。相反,您可以拍摄快照并附加到目标活动的覆盖层以实现所需的动画。

看看Shared 元素回调

基本上在共享元素开始时,您拍摄快照,将其添加到窗口叠加层,对其进行动画处理,然后在需要时将其隐藏。因此,当您返回时,如果您没有数据,只需再次使用快照模拟类似的东西,或者完全跳过动画。

看看下面的链接,它演示了同样的事情。

于 2015-12-03T04:52:54.333 回答