Wróć do strony głównej
Angular

Programowanie animacji w Angularze

Animacje odgrywają ważną rolę w obszarze user experience. Nie tylko usprawniają warstwę wizualną, ale posiadają także praktyczne zastosowania. Są one dość powszechne, więc każdy Angular Developer powinien być z nimi zaznajomiony. 

W artykule wyjaśnię jak programistycznie kontrolować animacje w celu usprawnienia doświadczeń użytkownika.

Jaki jest cel korzystania z animacji?

Wiele firm wykorzystuje animacje aby wspomóc użytkownika w poruszaniu się po aplikacji, ułatwić proces przekazywania informacji oraz wyjaśnić proste procesy użytkownikowi.

Do najczęstszych przykładów wykorzystania animacji można zaliczyć hover oraz click. Oprócz zmiany kursora w pointera, dodanie animacji hover do klikalnych elementów jest szybką metodą zakomunikowania użytkownikowi, że dany element jest klikalny. Z drugiej strony, animacja kliknięcia (np. efekt ripple na buttonach Angular Materiala) zapewnia użytkownikowi natychmiastową informację o tym, że aplikacja zarejestrowała wykonaną przez niego akcję. 

Jak dodać animację do aplikacji angularowej?

Jest wiele sposobów na to, aby dodać animację do aplikacji, łącznie z wbudowanym modułem animacji, który może być wykorzystany bez konieczności instalowania dodatkowych zależności. 

Animacje w angularze są zazwyczaj używane z wykorzystaniem tablicy animations w dekoratorze Component. Animacje te są następnie uruchamiane są poprzez zastosowanie dyrektyw animacji (z prefiksem @, takie jak @slideIn czy @fadeOut) na docelowym elemencie. 

To podejście pokrywa większość przypadków użycia oraz jest wygodnym sposobem na dodanie animacji do twojej aplikacji angularowej.

Jak edytować animacje w aplikacji angularowej?

Angular Animations zawiera klasę AnimationBuilder, dzięki której można tworzyć animacje programistycznie.

Oprócz podstawowych funkcji Angular Animations, zaprogramowane animacje za pośrednictwem AnimationPlayer zawierają dodatkowe funkcje do kontrolowania animacji, które nie są możliwe przy użyciu podejścia szablonowego. Funkcje te obejmują: 

  • pause – wstrzymuje animacje
  • finish – kończy animacje
  • restart – wznawia wstrzymaną animację
  • destroy– niszczy animacje
  • reset – resetuje animacje do stanu pierwotnego

Klasa AnimationPlayer także dostarcza callbacki dla kluczowych eventów animacji, takich jak: 

  • onStart – wywołana podczas startu animacji
  • onDone – wywołana przy zakończeniu animacji (automatycznie bądź przez wywołanie funkcji finish na uruchomionej aplikacji)
  • onDestroy – wywołana po zniszczeniu animacji (kiedy wywoływana jest funkcja destroy)

Możesz również przekazać callback do funkcji beforeDestroy jeżeli chcesz wykonać kod przed zniszczeniem animacji.

Podstawowe wykorzystanie

Spójrzmy na to, jak możemy wykorzystać AnimationBuilder oraz AnimationPlayer w celu uruchomienia animacji.

Zacznijmy od stworzenia docelowego elementu oraz kilku przycisków do kontrolowania animacji.

Dodajmy kilka styli do naszego komponentu: 

Przejdźmy teraz do animacji. Najpierw będziemy musieli uzyskać referencję do animowanego elementu. W tym celu użyjemy dekoratora ViewChild i przekażemy identyfikator elementu (#demoCard), który zdefiniowaliśmy wcześniej, aby uzyskać do niego dostęp.

Dodaj klasę AnimationBuilder i utwórz prywatną funkcję, aby zbudować animację i utworzyć instancję AnimationPlayer, której będziemy używać do uruchamiania naszych animacji.

Na koniec stwórzmy funkcje play, stop, pause i reset. Funkcje te będa pobierać AnimationPlayer poprzez wywołanie getAnimationPlayer(), a następnie będą wykonywać odpowiednie metody.

Jeżeli postępowałeś zgodnie z instrukcjami, powinieneś uzyskać następujące animacje:

Możesz odwiedzić Angular Animations Explorer aby zobaczyć live demo.

Podsumowując

Istnieje wiele sposobów na korzystanie z Angular Animations, z których każdy ma swoje idealne przypadki użycia. Jeżeli chcesz jedynie wywołać animacje, wybierz prostsze podejście szablonowe. Jeśli jednak potrzebujesz bardziej szczegółowej kontroli, użyj podejścia programistycznego, używając AnimationBuilder oraz AnimationPlayer. Możesz również sprawdzić Angular Animations Explorer, aby zobaczyć inne podejścia do dodawania animacji w Angularze.

Jeżeli interesują cie takie treści lub masz jakieś pytania, zostaw komentarz bądź skontaktuj się ze mną na Twitterze @williamjuan27.

O autorze

William Juan

Jestem frontend developerem pracujący głównie nad webowymi, jak i mobilnymi aplikacjami. Większość mojej pracy obracała się wokół ekosystemu Angular, w tym pracowałem z innymi frameworkami związanymi z Angular, takimi jak NativeScript i Ionic.

Zapisz się do naszego newslettera. Bądź na bieżąco z najnowszymi trendami, poradami, meetupami i stań się częścią społeczności Angulara w Polsce. Rynek pracy docenia członków społeczności.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *