Я пытаюсь сделать такую анимацию, но с фрагментами
https://i.imgur.com/rUkkfUZ.gif
У меня есть фрагмент A и фрагмент B
Фрагмент A содержит переработчик изображений. При нажатии на картинку она перейдет к фрагменту B.
Фрагмент B будет иметь такое же изображение, но поверх экрана.
Мне нужен переход, который перемещает выбранное изображение вверх, чтобы сделать его бесшовным.
На данный момент он работает при возврате, т.е. от фрагмента B к фрагменту A, но не работает от A к B.
Вот мой код
FragmentB fragmentB = FragmentB.newInstance(someURL);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.mytransition);
Fragment fragmenAt = fragmentManager.findFragmentById(R.id.fragmentContainer);
if(fragmentA != null && fragmentA instanceof FragmentA){
// fragment.setSharedElementReturnTransition(transition);
// fragment.setSharedElementEnterTransition(transition);
}
fragmentB.setSharedElementEnterTransition(transition);
if (sharedTransitionElementView != null) {
fragmentB.setSharedTransitionName(sharedTransitionElementView.getTransitionName());
fragmentTransaction.addSharedElement(sharedTransitionElementView, sharedTransitionElementView.getTransitionName());
}
}
fragmentTransaction.replace(R.id.fragmentContainer, fragmentB);
fragmentTransaction.addToBackStack(FragmentB.class.getName());
fragmentTransaction.commit();
Код выше находится в моей деятельности.
Шаги заключаются в том, чтобы создать экземпляр фрагмента B и найти фрагмент A.
Поскольку фрагмент A является представлением переработчика, каждому элементу представления присваивается имя перехода во время выполнения, которое передается во фрагмент B с помощью метода setSharedTransitionName().
Теперь в закомментированных строках происходит мое замешательство, у меня нет setSharedElementExitTransition.
Как я могу получить изображение из фрагмента А для анимации в верхней части экрана?
Просто повторюсь, это работает, когда я возвращаюсь от FragmentA к FragmentB, изображение анимируется сверху до того места, где оно было в списке.
ОБНОВЛЕНИЕ 1
Поэтому я внес это изменение в свой переход
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" android:duration="750" android:startDelay="150" android:interpolator="@android:interpolator/accelerate_decelerate">
<changeTransform/>
<slide android:slideEdge="top"/>
<changeImageTransform/>
<changeBounds/>
</transitionSet>
И только с этой строкой
fragmentB.setSharedElementEnterTransition(transition);
Кажется, я получаю выходной переход для фрагмента A, который я не установил. Кто-нибудь может объяснить, почему?
setSharedElementReturnTransition
иsetExitTransition
для видимого в данный момент фрагмента (того, который содержит представление переработчика).setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_transform)); setExitTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.explode));
- person ar34z   schedule 11.09.2015