Shared Element Transaction 在 android.R.transition 中有一组提供的转换类型,slide_top、slide_bottom、fade、move 等。
我的应用程序:API 21 :: 单一活动
Fragment1 : Nested Recyclerview:一个垂直的回收器视图,其中每个元素都是一个水平的回收器视图。后者中的每个元素都是用毕加索获取的图像视图。
片段 2:具有较大图像的细节视图。
我浏览了类似这样的各种帖子来建立它。从 fade 和 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() {
}
});
}
问题:但是,我无法使移动过渡工作,即使我尝试使用 changeBounds 和 changeImageTransformation 应用手动过渡集,也没有任何反应,并且新片段替换旧片段而没有任何过渡。只有更改setSharedElementReturnTransition
为 fade 或 slide_top 等工作正常,但没有任何实际读取边界和转换大小的内容。我已经尝试过设置 ActivityCompat.postponeEnterTransition(getActivity()); 在我的新片段上。
问题: 1. sharedElementTransition 中是否存在不允许它与嵌套回收器一起使用的基本问题?2.我在实施中遗漏了什么吗?
TIA