1

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

4

0 回答 0