Как изменить анимацию фрагментов на BackStack?
Я думал, что система обратной анимации на backstack при нажатии кнопки "назад" при использовании фрагментов, используя следующий код:
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out);
ft.replace(R.id.viewContainer, new class(), "layout").addToBackStack(null).commit();
4 ответов:
по словам Android документация для пользовательской анимации:
изменения:
ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out);To:
ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out, R.anim.hyperspace_in, R.anim.slide_out );и теперь backstack оживляет - в обратном!!
используйте правильную анимацию Я использовал следующее и его работа как шарм
slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="1000" android:valueTo="0" android:valueType="floatType" /> </set>slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="0" android:valueTo="1000" android:valueType="floatType" /> </set>slide_out_left.xml
<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="0" android:valueTo="-1000" android:valueType="floatType" /> </set>slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="-1000" android:valueTo="0" android:valueType="floatType" /> </set>затем используйте следующее При добавлении фрагмента
setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left, R.anim.slide_out_right, R.anim.slide_in_right)и это будет работать 100%
в моем случае
ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right, R.anim.slide_in_right, R.anim.slide_out_left);создать прекрасную анимацию.
slide_in_right
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="50%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_mediumAnimTime" /> </set>slide_out_left
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-50%p" android:duration="@android:integer/config_mediumAnimTime"/> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_mediumAnimTime" /> </set>
.setCustomAnimations(R.animator.fragment_fade_in, R.animator.fragment_fade_out, R.animator.fragment_fade_p_in, R.animator.fragment_fade_p_out)заменить выше:
mFragmentManager.beginTransaction() .setCustomAnimations(R.animator.fragment_fade_in, R.animator.fragment_fade_out, R.animator.fragment_fade_p_in, R.animator.fragment_fade_p_out) .replace(R.id.main_container, FragmentPlayerInfo.getInstance(data)) .addToBackStack(FragmentPlayerInfo.TAG) .commit();
Comments