从fragmentlerview片段中共享元素转换

时间:2017-10-28 11:43:43

标签: android android-fragments android-recyclerview recycler-adapter shared-element-transition

假设我有FragmentADetailActivityFragmentA有一个RecyclerViewAdapter。该适配器中的项目都有一个图像。当用户点击某个项目时,我想显示一个显示相同图像的详细信息页面(在DetailActivity中)。所以我将该图像作为共享元素,因此在导航到DetailActivity时我们获得了很好的转换。我已使用此代码实现了此功能:

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
  (Activity) context,
  recyclerViewHolder.img_bridge_icon,
  ViewCompat.getTransitionName(recyclerViewHolder.img_bridge_icon));

ActivityCompat.startActivity(context, intent, options.toBundle());

这很棒!图像被缩放并重新定位。现在,当我返回FragmentA时,适配器中的项已经加载了图像,而共享元素仍然忙于其转换。这意味着共享元素将显示两次,直到完成过渡动画。

我知道发生这种情况是因为FragmentADetailActivity返回时必须再次创建其视图。但是我该如何解决这个问题呢?在转换加载时,适配器应该以某种方式知道不显示共享ImageView

我添加了在DetailActivityFragmentA过渡期间制作的屏幕截图。底部图像是来自DetailActivity的图像,顶部图像来自适配器中的项目,它不应该在那里(底部图像应该是唯一的一个,因为它是那个中的一个)转换)。

Image double shared element

0 个答案:

没有答案