Animacje mogą dodawać wskazówki wizualne, które informują użytkowników o tym, co dzieje się w aplikacji. Są szczególnie przydatne, gdy zmienia się stan interfejsu, np. gdy wczytują się nowe treści lub pojawiają się nowe działania. Animacje nadają też aplikacji dopracowany wygląd, co sprawia, że wydaje się ona bardziej profesjonalna.
Android zawiera różne interfejsy API animacji w zależności od tego, jakiego typu animację chcesz utworzyć. W tej dokumentacji znajdziesz omówienie różnych sposobów dodawania ruchu do interfejsu.
Aby lepiej zrozumieć, kiedy należy używać animacji, zapoznaj się też z przewodnikiem po Material Design dotyczącym ruchu.
Animowanie bitmap
Rysunek 1. Animowany obiekt rysowalny.
Aby animować grafikę bitmapową, taką jak ikona lub ilustracja, użyj interfejsów API animacji obiektów rysowalnych. Zwykle te animacje są definiowane statycznie za pomocą obiektu rysowalnego, ale możesz też zdefiniować zachowanie animacji w czasie działania.
Na przykład dobrym sposobem na poinformowanie użytkownika, że 2 działania są ze sobą powiązane, jest animacja przycisku odtwarzania, który po kliknięciu zmienia się w przycisk wstrzymania.
Więcej informacji znajdziesz w artykule Animowanie grafiki rysowalnej.
Animowanie widoczności i ruchu interfejsu
Rysunek 2. Subtelna animacja pojawiania się i znikania okna sprawia, że zmiana interfejsu jest mniej gwałtowna.
Jeśli chcesz zmienić widoczność lub pozycję widoków w układzie, najlepiej użyć subtelnych animacji, które pomogą użytkownikowi zrozumieć, jak zmienia się interfejs.
Aby przenosić, wyświetlać lub ukrywać widoki w bieżącym układzie, możesz użyć systemu animacji właściwości dostępnego w pakiecie android.animation, który jest dostępny w Androidzie 3.0 (poziom interfejsu API 11) i nowszych wersjach. Te interfejsy API aktualizują właściwości obiektów View przez pewien czas, stale odświeżając widok w miarę zmian właściwości. Jeśli na przykład zmienisz właściwości pozycji, widok przesunie się na ekranie. Gdy zmieniasz właściwość alfa, widok pojawia się lub znika.
Najprostszym sposobem na utworzenie tych animacji jest włączenie ich w układzie, aby po zmianie widoczności widoku animacja była stosowana automatycznie. Więcej informacji znajdziesz w sekcji Automatyczne animowanie aktualizacji układu.
Aby dowiedzieć się, jak tworzyć animacje za pomocą systemu animacji właściwości, przeczytaj Omówienie animacji właściwości. Możesz też zapoznać się z tymi stronami, aby dowiedzieć się, jak tworzyć typowe animacje:
Ruch oparty na fizyce
Rysunek 3. Animacja utworzona za pomocą ObjectAnimator.
Rysunek 4. Animacja utworzona za pomocą interfejsów API opartych na fizyce.
Jeśli to możliwe, stosuj w animacjach prawa fizyki, aby wyglądały naturalnie. Na przykład powinny utrzymać tempo, gdy zmienia się ich cel, i płynnie przechodzić między zmianami.
Aby zapewnić takie zachowania, Biblioteka pomocy Androida zawiera interfejsy API animacji opartej na fizyce, które wykorzystują prawa fizyki do kontrolowania sposobu wyświetlania animacji.
Oto 2 typowe animacje oparte na fizyce:
Animacje, które nie są oparte na fizyce, np. utworzone za pomocą interfejsów API ObjectAnimator, są dość statyczne i mają stały czas trwania. Jeśli wartość docelowa ulegnie zmianie, musisz anulować animację w momencie zmiany wartości docelowej, ponownie skonfigurować animację z nową wartością jako nową wartością początkową i dodać nową wartość docelową. Wizualnie proces ten powoduje nagłe zatrzymanie animacji, a następnie niespójny ruch, jak pokazano na rysunku 3.
Animacje utworzone za pomocą interfejsów API animacji opartych na fizyce, takich jak DynamicAnimation, są napędzane siłą. Zmiana wartości docelowej powoduje zmianę siły. Nowa siła jest stosowana do istniejącej prędkości, co powoduje ciągłe przejście do nowego celu. Dzięki temu animacja wygląda bardziej naturalnie, jak pokazano na rysunku 4.
Animuj zmiany układu
Rysunek 5. Animację pokazującą więcej szczegółów można uzyskać, zmieniając układ lub rozpoczynając nową aktywność.
Na Androidzie 4.4 (poziom interfejsu API 19) i nowszych możesz używać platformy przejść, aby tworzyć animacje podczas zamiany układu w ramach bieżącej aktywności lub fragmentu. Wystarczy, że określisz układ początkowy i końcowy oraz typ animacji, której chcesz użyć. Następnie system określa i wykonuje animację między tymi 2 układami. Możesz go użyć, aby zamienić cały interfejs użytkownika lub przenieść albo zastąpić tylko niektóre widoki.
Gdy na przykład użytkownik kliknie element, aby zobaczyć więcej informacji, możesz zastąpić układ szczegółami elementu, stosując przejście takie jak na rysunku 5.
Układ początkowy i końcowy są przechowywane w obiekcie Scene, chociaż scena początkowa jest zwykle określana automatycznie na podstawie bieżącego układu. Tworzysz obiekt Transition, aby poinformować system, jakiego typu animacji potrzebujesz, a następnie wywołujesz metodę TransitionManager.go(), a system uruchamia animację, aby zamienić układy.
Więcej informacji znajdziesz w artykule Animowanie zmian układu za pomocą przejścia. Przykładowy kod znajdziesz w sekcji BasicTransition.
Animowanie przejść między aktywnościami
Na Androidzie 5.0 (poziom interfejsu API 21) i nowszych możesz też tworzyć animacje przejścia między aktywnościami. Opiera się ona na tej samej strukturze przejść, która została opisana w poprzedniej sekcji, ale umożliwia tworzenie animacji między układami w oddzielnych aktywnościach.
Możesz zastosować proste animacje, takie jak wysuwanie nowej aktywności z boku lub jej pojawianie się, ale możesz też tworzyć animacje, które przechodzą między udostępnionymi widokami w każdej aktywności. Gdy na przykład użytkownik kliknie element, aby zobaczyć więcej informacji, możesz przejść do nowej aktywności z animacją, która płynnie powiększa ten element, aby wypełnił ekran, jak na animacji na rysunku 5.
Jak zwykle wywołujesz startActivity(), ale przekazujesz pakiet opcji udostępniony przez ActivityOptions.makeSceneTransitionAnimation().
Ten pakiet opcji może obejmować widoki udostępniane między aktywnościami, dzięki czemu platforma przejść może je połączyć podczas animacji.
Dodatkowe materiały: