Sprawdziłem kilka tutoriali pod kątem animacji transakcji między fragmentami. Użyłem tej metody do animacji i działa:
fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
Ale chcę odwrócić tę animację: stary fragment wysuwa się w lewo, a nowy fragment w prawo, ale żadna wartość R.anim
pliku nie wydaje się być użyteczna dla mojego zakresu.
Jak mogę to zrobić?
override
key_code==back_key_press
w swoim drugim fragmencie.Odpowiedzi:
AKTUALIZACJA Dla Androida v19 + zobacz ten link przez @Sandra
Możesz tworzyć własne animacje. Umieść pliki animacji XML w
res > anim
enter_from_left.xml
enter_from_right.xml
exit_to_left.xml
exit_to_right.xml
możesz zmienić czas trwania na krótki czas animacji
lub długi czas animacji
UŻYCIE (pamiętaj, że kolejność wywoływania metod w transakcji ma znaczenie. Dodaj animację przed wywołaniem .replace, .commit):
źródło
700
Moim zdaniem czas trwania to trochę za dużo jak na takie animacje. Ramy Android ma 3 presety dla terminu:android:duration="@android:integer/config_longAnimTime"
,android:duration="@android:integer/config_mediumAnimTime"
iandroid:duration="@android:integer/config_shortAnimTime"
, co odpowiada 500, 400 i 200. Myślę, że urządzenie jest w milisekundach, ale nie jestem pewien.Istnieją trzy sposoby na fragmentaryczną animację transakcji.
Przejścia
Animacje niestandardowe
Animację można również dostosować za pomocą metody setCustomAnimations ():
slide_up.xml
slide_down.xml
Wiele animacji
Aby uzyskać więcej informacji, odwiedź URL
Uwaga: - Możesz sprawdzić animację zgodnie z wymaganiami, ponieważ powyżej może wystąpić problem.
źródło
Mam ten sam problem, zastosowałem proste rozwiązanie
1) utwórz slide_out_right.xml w folderze anim
2) utwórz slide_in_left.xml w folderze anim
3) po prostu używając transakcji fragmentarycznej setCustomeAnimations () z dwoma niestandardowymi plikami XML i dwoma domyślnymi plikami XML do animacji w następujący sposób: -
źródło
slide_in_down.xml
slide_in_up.xml
slide_out_down.xml
slide_out_up.xml
kierunek = w dół
kierunek = w górę
źródło
To kolejne rozwiązanie, z którego korzystam:
Wykorzystanie klasy. Załóżmy, że masz dwa fragmenty (fragmenty listy i szczegółów), jak pokazano poniżej
Stosowanie
Możesz użyć tej funkcji,
CustomAnimator.reversePrevious();
aby uzyskać poprzedni widok po naciśnięciu przez użytkownika.źródło