我从一个带有GridLayout
的RecyclerView
动画到另一个RecyclerView
。它像一个画廊展示图片。
父级RecyclerView
显示文件夹的前3个元素,子级RecyclerView
以网格形式显示完整内容...
主适配器
@Override
public void onBindViewHolder(FolderViewHolder holder, int position) {
holder.transitionPairs.clear();
for (int i = 0; i < 3; i++) {
ImageView iv = holder.getIconView(i);
Image image = mItems.get(position).getImages().get(i);
holder.transitionPairs.add(new Pair(iv, image.getTransitionName()));
}
child adapter
@Override
public void onBindViewHolder(ImageViewHolder holder, int position) {
ViewCompat.setTransitionName(holder.icon, mItems.get(position).getTransitionName());
}
- 两个适配器设置相同的转换名称,它是从图像URI生成的,因此一定是唯一的
我按照以下方式启动子视图:
Intent intent = new Intent(getActivity(), ImagesActivity.class);
intent.putExtra("folderIndex", pos);
intent.putExtra("folder", item);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), vh.getTransitionPairs().toArray(new Pair[vh.getTransitionPairs().size()]));
getActivity().startActivity(intent, options.toBundle());
}
else
getActivity().startActivity(intent);
转换对在
ViewHolder
中保存,并且在每次绑定ViewHolder
时生成,正如您可以在上面的ViewHolders
代码中看到的那样。
问题
子视图的显示没有动画效果,返回时有动画效果...