9

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

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

谢谢!

4

2 回答 2

4

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

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

第 3 步通常适用于此:

recyclerview.post(new Runnable() {
            @Override
            public void run() {
                supportStartPostponedEnterTransition();
            }
        });
于 2016-05-23T12:03:35.867 回答
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

于 2016-04-14T10:35:38.797 回答