How to use shared element transition between FirstFragment (including RecyclerView) and SecondFragment

╄→尐↘猪︶ㄣ 提交于 2019-12-08 09:51:02

问题


I could implement shared element transition between two fragments WITHOUT RECYCLERVIEW!!!

This is FirstFragment:

 public class FirstFragment extends Fragment {

ImageView img_small;
LinearLayout layout_ofc_cities;
LinearLayout layout;

public FirstFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_first, container, false);

    img_small = (ImageView) view.findViewById(R.id.img_small);
    layout_ofc_cities = (LinearLayout) view.findViewById(R.id.layout_ofc_cities);
    layout = (LinearLayout) view.findViewById(R.id.layout);

    layout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

                setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_trans));
                setExitTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.fade));

                SecondFragment secondFragment = new SecondFragment();
                secondFragment.setSharedElementEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_trans));
                secondFragment.setEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.fade));

                FragmentTransaction ft = getFragmentManager().beginTransaction()
                        .replace(R.id.container, secondFragment)
                        .addToBackStack(null)
                        .addSharedElement(layout_ofc_cities, "transitionTxt")
                        .addSharedElement(img_small, "transitionImg");
                ft.commit();
            }

        }
    });

    return view;
  }
}

and this is SecondFragment:

 public class SecondFragment extends Fragment {

public SecondFragment() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_second, container, false);

    return view;
  }

}

And it works! but when I implements a RecyclerView in FirstFragment to use SharedElementTransition for a LinearLayout and an ImageView of RecyclerView to a LinearLayout and an ImageView in SecondFragment it doesn't work.

I want a sample code with two Fragments that the first one has RecyclerView in it, with animation between their shared elements. Can anyone help me?


回答1:


I found the answer:

the solution is on this page: http://jemsdevmobile.com/2016/02/11/lollipop-transition-between-activities/

just you need to change xml tags. for example change "imageview" to "ImageView"



来源:https://stackoverflow.com/questions/38157910/how-to-use-shared-element-transition-between-firstfragment-including-recyclervi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!