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

时间:2015-09-24 03:19:07

标签: android android-transitions android-5.1.1-lollipop shared-element-transition

鉴于具有共享元素的活性的正常棒棒糖转变,例如, https://github.com/codepath/android_guides/wiki/Shared-Element-Activity-Transition,很常见的是从“回收者视图”视图转换为目标活动的正常视图。

但是,如果是目标视图,也是在recyclerView的视图中,是否有办法使其成为可能(即向ActivityOptionsCompat提供目标视图)?

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

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

官方文档声明了限制:

  

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

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