Wprowadzenie do animacji

Wypróbuj sposób tworzenia wiadomości
Jetpack Compose to zalecany zestaw narzędzi UI na Androida. Dowiedz się, jak korzystać z animacji w Compose

Animacje mogą zawierać wizualne wskazówki informujące użytkowników o tym, co się dzieje w aplikacji. Są one szczególnie przydatne, gdy interfejs użytkownika zmienia stan, np. gdy wczytuje się nowa zawartość lub pojawiają się nowe działania. Animacje dodają aplikacji też styl wyższej jakości.

Android oferuje różne interfejsy API do animacji w zależności od wybranego typu animacji. Ta dokumentacja zawiera omówienie różnych sposobów dodawania ruchu do interfejsu.

Aby lepiej zrozumieć, kiedy należy używać animacji, zapoznaj się też z przewodnikiem o ruchu w Material Design.

Animuj mapy bitowe

Rysunek 1. Animowany element rysowalny.

Aby animować grafikę bitmapową, taką jak ikona czy ilustracja, użyj interfejsów API animacji z możliwością rysowania. Zazwyczaj takie animacje są zdefiniowane statycznie za pomocą rysowanego zasobu, ale można też określić ich zachowanie w czasie działania.

Aby na przykład poinformować użytkownika, że ze sobą są powiązane 2 działania, można animować przycisk odtwarzania, który po dotknięciu zmienia się w przycisk pauzy.

Więcej informacji znajdziesz w artykule Animacja rysowalna grafika.

Animuj widoczność i ruch w interfejsie

Rysunek 2. Subtelna animacja, gdy pojawi się i znika okno, zmniejsza zdenerwowanie interfejsu.

Gdy musisz zmienić widoczność lub pozycję widoków w układzie, najlepiej dodaj subtelne animacje, które pomogą użytkownikowi zrozumieć, jak zmienia się interfejs.

Aby przenieść, pokazać lub ukryć widoki w bieżącym układzie, możesz użyć systemu animacji właściwości dostępnego w pakiecie android.animation, dostępnego w Androidzie 3.0 (poziom interfejsu API 11) i nowszych wersjach. Te interfejsy API aktualizują właściwości obiektów View w określonym czasie, stale zmieniając widok. Na przykład gdy zmienisz właściwości pozycji, widok przesuwa się po ekranie. Po zmianie właściwości w wersji alfa widok zanika lub znika.

Najprostszym sposobem utworzenia takich animacji jest włączenie w układzie animacji animacji, tak aby po zmianie widoczności widoku animacja była stosowana automatycznie. Więcej informacji znajdziesz w artykule Automatyczne animowanie układu.

Aby dowiedzieć się, jak tworzyć animacje za pomocą systemu animacji właściwości, przeczytaj Omówienie animacji usługi. Na tych stronach możesz też tworzyć popularne animacje:

Ruch oparty na fizyce

Rysunek 3. Animacja utworzona w ObjectAnimator.

Rysunek 4. Animacje stworzone przy użyciu interfejsów API opartych na fizyce.

W miarę możliwości stosuj w animacjach zasady fizyki, aby wyglądały naturalnie. Powinni na przykład zachowywać tempo, gdy zmienia się wartość docelowa, i wprowadzać płynne przejścia podczas każdej zmiany.

Aby umożliwić takie działanie, biblioteka pomocy Androida zawiera oparte na fizyce interfejsy API do tworzenia animacji, które kontrolują sposób wyświetlania animacji na podstawie praw fizyki.

Są to 2 typowe animacje oparte na fizyce:

Animacje nieoparte na fizyce – np. te utworzone przy użyciu interfejsów API ObjectAnimator – są dość statyczne i mają stały czas trwania. Jeśli wartość docelowa ulegnie zmianie, musisz anulować animację w chwili zmiany wartości docelowej, ponownie skonfigurować animację z nową wartością początkową i dodać nową wartość docelową. Wizualnie proces ten powoduje nagłe zatrzymanie animacji, a po jej zakończeniu ruch rozłączony, jak widać na grafice 3.

Animacje utworzone przy użyciu interfejsów API do 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 nowej wartości docelowej. Pozwala to uzyskać bardziej naturalnie wyglądającą animację, jak widać na rys. 4.

Animuj zmiany układu

Rysunek 5. Aby wyświetlić więcej szczegółów, zmień układ lub rozpocznij nowe działanie.

W Androidzie 4.4 (poziom interfejsu API 19) i nowszych możesz używać platformy przejścia do tworzenia animacji w przypadku zmiany układu w bieżącym działaniu lub fragmencie. Musisz tylko określić układ początkowy i końcowy oraz wybrać typ animacji. Następnie system wybiera i uruchamia animację między obydwoma układami. Pozwala to zamienić cały interfejs lub przenieść bądź zastąpić tylko niektóre widoki.

Na przykład, gdy użytkownik kliknie element, aby zobaczyć więcej informacji, można zastąpić układ szczegółami elementu, stosując przejście takie jak na ilustracji 5.

Układ początkowy i końcowy jest przechowywany w elemencie Scene, ale scena początkowa jest zwykle określana automatycznie na podstawie bieżącego układu. Utwórz Transition, aby poinformować system o wybranym typie animacji, a następnie wywołaj funkcję TransitionManager.go(), a system uruchomi animację, aby zamienić układy.

Więcej informacji znajdziesz w artykule Animowanie zmian układu przy użyciu przejścia. Przykładowy kod znajdziesz w sekcji BasicPrzenoszenie.

Przełączaj się między czynnościami

Na Androidzie 5.0 (poziom interfejsu API 21) i nowszych możesz też tworzyć animacje, które stanowią przejście między działaniami. Opiera się on na tym samym układzie przejścia omówionym w poprzedniej sekcji, ale pozwala tworzyć animacje między układami w ramach oddzielnych działań.

Możesz zastosować proste animacje, takie jak przesunięcie nowej aktywności z boku lub zaniknięcie, ale możesz też tworzyć animacje przechodzące między udostępnionymi widokami w przypadku każdego działania. Na przykład, gdy użytkownik kliknie element, aby zobaczyć więcej informacji, można przejść do nowej aktywności z animacją, która płynnie powiększy dany element, aż wypełni ekran, tak jak na ilustracji 5.

Jak zwykle wywołujesz funkcję startActivity(), ale przekazujesz mu pakiet opcji udostępnianych przez ActivityOptions.makeSceneTransitionAnimation(). Ten pakiet opcji może obejmować widoki, które są współdzielone przez działania, dzięki czemu platforma przejścia może je połączyć podczas animacji.

Dodatkowe materiały: