Анимация анимации Android Fragment, воспроизведенная выше, вводит анимацию

Я реализую анимацию перехода фрагментов.

Моя анимация exit

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together"> <objectAnimator android:propertyName="scaleX" android:valueType="floatType" android:valueFrom="1.0" android:valueTo="0.95" android:duration="300"/> <objectAnimator android:propertyName="scaleY" android:valueType="floatType" android:valueFrom="1.0" android:valueTo="0.95" android:duration="300"/> <objectAnimator android:propertyName="x" android:valueType="floatType" android:valueFrom="0" android:valueTo="10dp" android:duration="300"/> </set> 

enter анимацию:

 <?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:propertyName="x" android:valueType="floatType" android:valueFrom="1280" android:valueTo="0" android:duration="400"/> 

Транзакция создается следующим образом:

 fragmentManager.beginTransaction() .setCustomAnimations(enter, exit, popEnter, popExit) .replace(CONTENT_CONTAINER_ID, newFragment) .addToBackStack(null) .commit(); 

При нормальной скорости анимации нежелательный эффект почти невидим из-за короткой продолжительности анимации, но, когда вы замедляете их, вы можете ясно видеть, что z-order неправильный.

Ввод фрагментации анимации происходит ниже анимации фрагмента фрагмента. Есть ли способ обхода решения?

Solutions Collecting From Web of "Анимация анимации Android Fragment, воспроизведенная выше, вводит анимацию"

Я думаю, вы могли бы попробовать следующий подход в качестве работы.

 fragmentTr.setCustomAnimations(enter, exit); fragmentTr.hide(currentFragment); fragmentTr.add(containerId, newFragment, "aTag"); fragmentTr.show(newFragment); fragmentTr.commit(); 

Не используйте replace (). Я пробовал вышеупомянутый подход, и он сработал. Надеюсь это поможет.

Возможно, это уже устарело, но я столкнулся с одной и той же проблемой. Я решил это, определив две области содержимого в моем XML, например:

 <FrameLayout> <FrameLayout id="@+id/oldFragment" /> <FrameLayout id="@+id/newFragment" /> </FrameLayout> 

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

 getActivity().getSupportFragmentManager() .beginTransaction() .remove(old_frag) .add(R.id.newFragment, new_frag) .addToBackStack(null) .commit(); 

Надеюсь, это поможет.

Это сработало для меня, чтобы добавить эту строку в анимацию

 android:interpolator="@android:anim/linear_interpolator"