Mam trzy działania, których tryby uruchamiania to pojedyncze wystąpienie.
Używając onfling()
, macham nimi w lewo i prawo.
Problem polega na tym, że kiedy przesuwam palcem od prawej do lewej, przejście między slajdami jest w porządku, ale kiedy przesuwam palcem od lewej do prawej, dostaję przejście od przesuwania od prawej do lewej.
Wiem, dlaczego tak się dzieje, ponieważ zawsze wysyłam nowe zamiary. Ale teraz muszę zmienić animację przesuwania się od lewej do prawej.
Wiem, że istnieje metoda o nazwie overridingTransitionPending()
, ale nie wiem, jak zdefiniować moją animację w XML.
Odpowiedzi:
Użyj tego xml w
res/anim/
To jest dla animacji od lewej do prawej:
To jest dla animacji od prawej do lewej:
W kodowaniu używaj zamiaru takiego jak od lewej do prawej:
W swoim kodowaniu używaj zamiaru od prawej do lewej
źródło
Jeśli chcesz, aby przejście działało dla całej aplikacji, możesz utworzyć
rootacivity
i odziedziczyć je w wymaganym działaniu. W aplikacji Root Activity onCreateoverridePendingTransition
z wybranym kierunkiem. IonStart
dzwońoverridePendingTransition
w innym kierunku, jeśli aktywność zostanie wznowiona. Tutaj podaję pełny kod poniżej. Popraw mnie, jeśli się mylę.utwórz ten plik xml w swoim folderze anim
anim_slide_in_left.xml
anim_slide_in_right.xml
anim_slide_out_left.xml
anim_slide_out_right.xml
RootActivity
FirstActivity
SecondActivity
ThirdActivity
i wreszcie Manifest
źródło
Utworzono przykładowy kod implementujący to samo z efektami slajdów od lewej, prawej, góry i dołu. (Dla tych, którzy nie chcą tworzyć wszystkich plików anim xml :))
Sprawdź kod na github
źródło
Użyj tego stylu, jak zdefiniowałem poniżej.
pojawiają się - sprawiają, że po prostu się pojawiają
===========================================
sprawiają, że powoli przechodzi w view.xml
==========================================
zanikanie - spraw, aby powoli znikało z widoku.xml
==========================================
push_down_in.xml
==========================================
push_down_out.xml
==========================================
push_left_in.xml
==========================================
push_left_out.xml
==========================================
push_right_in.xml
==========================================
push_right_out.xml
==========================================
push_up_in.xml
==========================================
push_up_out.xml
==========================================
rotacja.xml
==========================================
scale_from_corner.xml
==========================================
scale_torwards_corner.xml
==========================================
shrink_and_rotate_a (exit) .xml
==========================================
shrink_and_rotate_b (wejście) .xml
========================================
blink.xml
========================================
ZoomIn.xml
========================================
ZoomOut.xml
========================================
FadeIn.xml
========================================
FadeOut.xml
========================================
Move.xml
========================================
SlideDown.xml
========================================
SlideUp.xml
========================================
Bounce.xml
źródło
Możesz zastąpić domyślną animację aktywności. Oto rozwiązanie, którego używam:
Utwórz „CustomActivityAnimation” i dodaj ją do swojego podstawowego motywu za pomocą „windowAnimationStyle”.
Utwórz folder anim w folderze res, a następnie utwórz następujące cztery pliki animacji:
slide_in_right.xml
slide_out_left.xml
slide_in_left.xml
slide_out_right.xml
To jest mój przykładowy projekt w github.
To wszystko ... Szczęśliwego kodowania :)
źródło
Możesz także to zrobić:
I nie musisz dodawać żadnych animacji xml
źródło
Nie byłem w stanie znaleźć żadnego rozwiązania dla tego typu animacji przy użyciu ViewPropertyAnimator.
Oto przykład:
Układ:
Animacja - widok od prawej do lewej i wyjście:
Animacja - widok od prawej do lewej:
źródło
Jeśli Twój poziom interfejsu API to 19+, możesz użyć
translation
jak wyżej. Jeśli poziom interfejsu API jest mniejszy niż 19, możesz obejrzeć podobny samouczek: http://trickyandroid.com/fragments-translate-animation/źródło
Dla od prawej do lewej slajdów
res / anim / in.xml:
res / anim / out.xml:
w pliku Java aktywności:
możesz zmienić czas trwania w plikach xml dla dłuższej lub krótszej animacji slajdu.
źródło