共享元素事务在android.R.transition中有一组提供的transistion类型,slide_top,slide_bottom,fade,move等。
我的应用:API 21 ::单一活动
片段1: 嵌套Recyclerview:垂直回收视图,其中每个元素都是水平回收视图。后者中的每个元素都是用Picasso获取的图像视图。
片段2: 细节视图与更大尺寸的图像。
我经历了this one之类的各种帖子来构建它。 实现共享元素转换的所有核心元素都是正确构建的,因为淡入淡出和slide_top / bottom / right / left都能正常工作。
第一个片段:
setSharedElementReturnTransition(TransitionInflater.from(getActivity())
.inflateTransition(android.R.transition.slide_top));
Fragment pFragment = PFragment.newInstance(item, transitionName);
pFragment.setSharedElementEnterTransition(new ChangeBounds());
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, pFragment)
.addSharedElement(sharedImageView,
sharedImageView.getTransitionName())
.addToBackStack(null)
.commit();
第二片段:
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (getArguments() != null) {
mSId = getArguments().getString(KEY_S);
transitionName = getArguments().getString(KEY_T);
img = (ImageView) view.findViewById(R.id.s_image);
ViewCompat.setTransitionName(img, transitionName);
Log.e(TAG, "Transition name is " + transitionName);
}
PicassoWithAuth.getImageLoader(getActivity()).with(getActivity())
.load(R.drawable.dummy).into(img, new Callback() {
@Override
public void onSuccess() {
ActivityCompat.startPostponedEnterTransition(getActivity());
}
@Override
public void onError() {
}
});
}
ISSUE:
但是,我无法使移动过渡工作,即使我尝试使用changeBounds应用手动转换集并且changeImageTransformation也没有发生任何事情,新片段将替换旧片段而不进行任何转换。只有将setSharedElementReturnTransition
更改为淡入淡出或幻灯片等等才能正常工作,但实际上没有任何内容可以读取边界和转换的大小。
我已经尝试过设置ActivityCompat.postponeEnterTransition(getActivity());在我的新片段上。
问题: 1. sharedElementTransition中是否存在一个基本问题,它不允许它与嵌套回收器一起使用? 2.在实施过程中是否遗漏了一些内容?
TIA