Я пытаюсь использовать переход 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());
}
}
переход выглядит так, будто он не работает, нет движения и плавности
есть ли лучший способ сделать это?