Android Переход с общими элементами во фрагменте внутри ViewPager - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь использовать переход Android для общих элементов между 2 фрагментами внутри viewPager следующим образом:

MainActivity -> viewPager (fragment1, fragment2, fragment3)

в fragment1 у меня есть recyclerView с элементами, когда я нажимаю на элемент, я запускаю новый фрагмент (для подробностей элемента), я хочу использовать общие элементы для плавной красивой анимации.

вот как я запускаю новый фрагмент для подробностей:

@Override
public void onItemClick(View view, int position) {
    // Ordinary Intent for launching a new activity
    Intent intent = new Intent(getActivity(), CardDetail.class);
    intent.putExtra("nom", ((User)pros.get(position)).getName());
    intent.putExtra("phone", ((User)pros.get(position)).getPhone());



    ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(),
            Pair.create((View) rootView.findViewById(R.id.pro_img), "img_transition_string"),
            Pair.create((View) rootView.findViewById(R.id.pro_nom), "nom_transition_string"),
            Pair.create((View) rootView.findViewById(R.id.pro_phone), "phone_transition_string")
            );


    FragmentManager fragmentManager =  getFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();


    DetailFragment fragment = new DetailFragment();
    Bundle bundle = new Bundle();
    bundle.putString("nom", ((User)pros.get(position)).getName());
    bundle.putLong("phone", ((User)pros.get(position)).getPhone());
    fragment.setArguments(bundle);


    // Define the shared element transition.
    fragment.setSharedElementEnterTransition(new DetailsTransition());
    fragment.setSharedElementReturnTransition(new DetailsTransition());

    // Now use the image's view and the target transitionName to define the shared element.
    transaction.addSharedElement(rootView.findViewById(R.id.pro_img), "img_transition_string");
    transaction.addSharedElement(rootView.findViewById(R.id.pro_nom), "nom_transition_string");
    transaction.addSharedElement(rootView.findViewById(R.id.pro_phone), "phone_transition_string");

    transaction.replace(android.R.id.content, fragment);
    transaction.addToBackStack(null);

    transaction.commit();

}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class DetailsTransition extends TransitionSet {

    public DetailsTransition() {
        setOrdering(ORDERING_SEQUENTIAL);
        addTransition(new ChangeBounds()).
                addTransition(new ChangeTransform()).
                addTransition(new ChangeImageTransform());
    }

}

переход выглядит так, будто он не работает, нет движения и плавности

есть ли лучший способ сделать это?

...