Intereting Posts
Заполнение ListView на фрагменте после выполнения Async из Activity Запросы Facebook Вызов одной активности от другого в Android Обходной путь для необходимости использования строки _id для CursorAdapter Отключение центра MapFragment для анимации, перемещающей как целевой лат / lng, так и уровень масштабирования Где я могу найти более старые версии Eclipse ADT Как интегрировать Google Диск с Picasso на Android? Невозможно установить родительскую активность для новых действий в Android Studio. Ошибка: Иерархический родитель должен уже существовать Можно ли заполнить ListView снизу? Применение темы AppCompat к индивидуальным предпочтениям в PreferenceFragment Как получить представление о содержании активности? Можно отображать миниатюру видео с URL-адреса на Android 4 и выше? Profard obfuscation ломает simplexml Как скомпилировать C-программу для Genymotion (Android x86) Xamarin.Forms Фотосъемка с камерой показывает неправильную ориентацию и сбой на задней кнопке

Андроид поп-фрагмента из backstack с анимацией

У меня есть активность, которая загружает в нее фрагмент A. Фрагмент A содержит ListView, и при нажатии на элементе списка я загружаю еще один фрагмент B вместо фрагмента A, чтобы показать детали элемента списка. При нажатии кнопки и нажатии кнопки возврата устройства я загружаю предыдущий фрагмент, который является фрагментом A, который показывает ListView. Все это работает нормально, но я хочу загрузить фрагмент A с анимацией при нажатии или нажатием кнопки. Я делаю это таким образом, но не работаю:

FragmentManager fsm = getSupportFragmentManager(); FragmentTransaction ftransaction = fsm.beginTransaction(); ftransaction.setCustomAnimations(R.anim.enter_from_left, R.anim.enter_from_left); fsm.popBackStack(); ftransaction.commit(); <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false" > <translate android:duration="700" android:fromXDelta="-100%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="0%" /> </set> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false" > <translate android:duration="700" android:fromXDelta="-100%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="0%" /> </set> 

Solutions Collecting From Web of "Андроид поп-фрагмента из backstack с анимацией"

Если вам нужны анимации backstack, вам необходимо использовать:

SetCustomAnimations (int enter, int exit, int popEnter, int popExit)

Что-то вроде:

 setCustomAnimations(R.anim.enter_from_left, R.anim.enter_from_left, R.anim.exit_to_left, R.anim.exit_to_left); 

В моем случае

 FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right, R.anim.slide_in_right, R.anim.slide_out_left); ft.replace(R.id.fragment_container, targetFragment).addToBackStack(null).commit(); 

Эта линия

 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>