共享元素可以转换为RecyclerView中的视图吗?

鉴于具有共享元素的Activity的正常Lollipop转换,例如https://github.com/codepath/android_guides/wiki/Shared-Element-Activity-Transition ,很常见的是从View of Recycler View转换为正常查看目标活动。

但是,如果是目标视图,也是在recyclerView的视图中,是否有可能实现这一点(即向ActivityOptionsCompat提供目标视图)?

谢谢!

根据我的调查,这是不可能的。 在共享元素转换可以创建其animation之前,它必须首先捕获每个共享元素的开始和结束状态 – 即它在调用和调用的活动/片段中的位置,大小和外观。 通过此信息,转换可以确定每个共享元素视图应如何设置animation。 (通过http://www.androiddesignpatterns.com/2015/01/activity-fragment-shared-element-transitions-in-depth-part3a.html )

官方文件声明了限制:

扩展AdapterView的类(如ListView)以与转换框架不兼容的方式管理其子视图。 如果您尝试基于AdapterView为视图设置animation,则设备显示可能会挂起。

http://developer.android.com/training/transitions/overview.html#Limitations

绝对可能。 这样做你必须遵循以下步骤:

  1. 使用supportPostponeEnterTransition()推迟目标活动的转换。
  2. 将适配器设置为RecyclerView。
  3. 在RecyclerView绘制项目后开始推迟转换。

第3步通常适用于此:

 recyclerview.post(new Runnable() { @Override public void run() { supportStartPostponedEnterTransition(); } });