Mobilne Aplikacje z React
5 godz. 51 min · React Native · Full-stack i Programowanie
Piotr SzacińskiZarówno iOS jak i Android posiadają swoje natywne SDK, do obsługi którego musimy poznać nowe języki - Swift czy Kotlin, o Objective-C czy Javie nie wspominając. Z kolei React Native jest do tego świetną alternatywą, która pozwala tworzyć jeden kod na obie platformy. Dodatkowo - bazuje na najpopularniejszym frameworku webowym, co znacząco zmniejsza próg wejścia.
Tak samo jak "czysty" React, React Native opiera się na komponentach. Poznasz ich specyfikę i nauczysz się poprawnie budować UI aplikacji. Zrozumiesz też jak najwydajniej zarządzać skomplikowanym layoutem, takim jak długie listy, i jak to wszystko łatwo stylować.
Animacje to nie tylko efekty przyjemne dla oka - to przede wszystkim dobry UX, który pozwala użytkownikowi odnaleźć się w aplikacji i zrozumieć jej mechanikę. Podczas kursu poznasz wszystkie podstawowe metody i koncepcje tworzenia animacji oraz poznasz sposoby optymalizacji ich działania. Dodatkowo omówimy prawidłowe podejście do dużo bardziej skomplikowanych interaktywnych animacji, przedstawimy ciekawe biblioteki oraz best-practices.
Praktycznie każda aplikacja, niezależnie od tego, czy web, czy mobile, składa się z wielu widoków i ekranów. Zarządzanie ścieżkami, jakimi użytkownik może się poruszać, to jedna z najważniejszych rzeczy - a w tym kursie dowiesz się jakich narzędzi należy używać i jak łatwo obsługiwać zagnieżdżone ekrany.
Niewątpliwym atutem aplikacji jest to, że może praktycznie bez ograniczeń przechowywać content w urządzeniu telefonu, a przez to - dostarczać treści niezależnie od dostępności internetu. Omówimy różne koncepcje zapisywania danych oraz poznamy metody i narzędzia do ich wdrażania.
Przybliżymy ci proces wypuszczania aplikacji "w świat" oraz przedstawimy narzędzia, z których sam autor korzysta do ułatwienia tego procesu.
Kurs jest dla każdego kto zna podstawy JavaScript oraz React i chciałby się rozwijać i tworzyć mega ciekawe projekty, które mogą używać aparatu czy sensorów smartfona.
0.62.2+
Okej w poprzedniej lekcji zrobiliśmy naszą pierwszą
animację interaktywną i na tym zakończymy te animacje
ponieważ to troszeczkę wykracza poza zakres materiału podstawowego natomiast w wielkim
uproszczeniu to w sumie wygląda podobnie to znaczy zawsze musimy mieć jaieś źródło danych w tym wypadku
mamy tutaj informację o pozycji scrolla w przypadku na przykład animacji w której
używalibyśmy gestu czyli takiego pan gesture mielibyśmy też pozycję
x y palca który tutaj byłby
na ekranie który byłby przesuwany i również coś musielibyśmy z tym zrobić problemy
są dwa pierwsze to że tak jak no tutaj w tym przypadku
prostej animacji scrolla mapujemy sobie po prostu naszą wartość na wartość
naszej animacji a interpolujemy tak żeby to gdzieś satysfakcjonowało
nas i na tym kończymy natomiast jeśli chcielibyśmy zrobić coś więcej na
przykład dodać jakiś warunek czy zrobić żeby ta animacja była troszkę
bardziej skomplikowana no to zaczynają się problemy jak to zrobić w momencie gdy ten interpolate nas trochę
ogranicza a cheilibyśmy używać native drivera czyli nie chcemy tutaj
stworzyć logiki w javascripcie która gdzieś tam była że jeśli na przykład palec
opuścił czyli mamy ten akcję release
puszczamy palec to żeby coś się stało ale jeśli jest naciśnięcie
to żeby to się jeszcze zwiększyło i tak dalej a no i to się da zrobić ale właśnie
jest to dość problematyczne ze względu na wydajność na szczęście
powstała biblioteka react native reanimated która rozwiązuje ten problem ona
działa w ten sposób że tworzy swój tworzy
swój taki język deklaratywny język tworzenia animacji
który jest tworzony znaczy piszemy
go w javascripcie chociaż on troszeczkę inaczej wygląda zaraz go pokażę a następnie jest wysyłany do strony natywnej
i ona go już obsługuje czyli jesteśmy w stanie napisać logikę taką którą w javascripcie
piszemy czyli if coś tam then coś tam i tak dalej jesteśmy w stanie napisać w
tym języku i wysłać do strony natywnej która to zrozumie i zinterpretuje
a zresztą sama biblioteka reanimated przezarzucała
się już przez nasz kurs parę razy między innymi dlatego że nasza biblioteka
do animacji react navigation korzysta z niej w przypadku gestów
cofnięcia i tak dalej i różnych animacji oraz jak widzieliście
gdzieś tam przypadkiem jak importowaliśmy animated object to on został przypadkowo
zaimportowany właśnie z tej biblioteki poniewąż taki object też tam jest i tak naprawdę
moglibyśmy tej biblioteki animated react native nie używać
w ogóle tylko w stu procentach przejść na react reanimated co ja robię w
przypadku większości projektów tak więc na poczatkowym etapie oczywiście to nie będzie
potrzebne ale gdzieś tam w przyszłości może wam się przydać i teraz chciałbym żebyśmy rzucili okiem
tylko nie martwcie się że to może być dla was trochę niejasne żebyśmy
rzucili okiem jak to wygląda jak wygląda ten język tego
reanimated znaczy mamy właśnie ten przykład o którym mówiłem czyli mamy jakiś pan gesture
handler czyli jakby nasłuchujemy gest przesunięcia
palcem po ekranie czy po jakimś komponencie dostajemy jakiś event czyli on gesture
event i on nam zwraca jakieś wartości tak zwraca nam jakiś translation x translation y
i state czyli te pozycje x y palca i state czyli czy palec
jest dalej jakby wciśnięty czy był puszczony i co tu się dzieje tworzymy sobie
blok takiej animacji w której możemy robić właśnie
pisać naszą logikę ale deklaratywnie dlatego trochę dziwnie wygląda natomiast jakbyśmy sobie
to przetłumaczyli na javascripta to byłoby bardzo proste i to by wyglądało tak że trans
x równa się x plus offset jeśli coś tam to coś tam i to by było bardzo
proste natomiast na początku ta deklaratywna formuła
jest trochę enigmatyczna ale szybko można ją rozwieść ja mogę pokrótce powiedzieć
co tu się dzieje to znaczy w tym naszym bloku tak naprawdę
przy zmiennej trans x przypisujemy sumę tych dwóch wartości
zmiennej trans y sumę pozycji y i offsetu
a potem sprawdzamy warunek czyli jeśli state jest równe state end to ustaw
taką wartość x ustaw wartość y i tyle czyli jakby sama ta logika jest
bardzo prosta tylko z racji tego żeby umożliwić
interpretację tego po stronie natywnej to nie możemy tego pisać w js-ie musimy to napisać właśnie w
takim języku który będzie możliwy do wysłania sparsowania i wysłania i
uruchomienia po stronie natywnej i oczywiście
tu jest dokumentacja możecie sobie ją całą przejrzeć tych możliwości tworzenia
tych bloków i funkcji jest całkiem sporo natomiast jeśli nie chcielibyście od
razu się to zagłębiać tak niskopoziomowo to możecie sobie zobaczyć bardzo
fajny profil pana williama candilliona nie wiem czy tak się czyta nazwisko
zdaje się że jest francuzem który prowadzi kanał can be done in react native
i tutaj są pokazane przeróżne animacje od gestów
jakichś przeciągnięć od transitions na widokach poprzez
jakieś 3d animacje i bardzo często właśnie william korzysta
z reanimated i to jest fajne możecie sobie taki filmik dotykaj możecie sobie taki
filmik zobaczyć nawet nie skupiałem się za bardzo jak to działa jak on to zrobił ale popatrzeć
co tak naprawdę da się zrobić zresztą sama nazwa kanału wskazuje jest to super super zajawka
mam wielki fan zaglądania do tych filmików i polecam wam ten kanał
sprawdzić bo naprawdę można się wiele nauczyć jeśli będziecie już
na takim poziomie że okej dochodzicie do animacji właśnie interaktywnych
czy macie takie wymagania już piszecie jakąś aplikację swoją to po przejrzeniu tych filmików myślę
że jesteście w stanie juz zasiąść do tej dokumentacji i zacząć analizować jak
taką waszą animację pierwszą stworzyć czyli to jest oczywiście
coś już bardziej zaawansowanego natomiast rzucam wam to jako taki tip który
możecie sobie sprawdzać w przyszłości albo jako po prostu taką ciekawostkę drugą rzeczą którą
chciałbym wam pokazać w przypadku animacji to jest coś to pewnie jest większości osób
znane to jest biblioteka lottie która
również jest portowana na react native i to jest super bo bardzo często mamy
animacje które są no
właśnie na przykład takie i które okej moglibyśmy pewnie w jakiś sposób zaimplementować
czy to deklaratywnie przy pomocy reanimated czy po prostu przy pomocy
biblioteki animated i jakichś tam elementów z kórych by to się składało tylko
po co lottie jest takim narzędziem jest
wtyczką do adobe after effects który generuje
nam taką animacje którą sobie po prostu wklejamy w formie pliku jsona do
naszej aplikacji i możemy sobie taką animację wkleić to jest super
bo animacje wyglądają naprawdę fajnie a nie ma konieczności
zastanawiania się i bezsensownego tworzenia tego z poziomu
właśnie javascriptu i z poziomu takiej logiki tylko po prostu importujemy to sobie z
after effecta designer z którym będziemy współpracować na pewno jest tego narzędzia
korzysta i bez problemu będzie w stanie to zaimportować i możemy osiągnąć naprawdę fajne
rezultaty z ciekawostek mogę powiedzieć że twórcą tej
biblioteki jest airbnb który też tam już na starcie ma parę takich fajnych animacji a
generalnie jeśli chodzi o cały dział animacji to tyle przeszliśmy
od prostych animacji które są po prostu wywoływane
na jakiś tam efekt po animacje zaloopowane które w tej chwili wyłączyłem bo mój
komputer odleciałby w kosmos po animacje kończąc na
animacjach interaktywnych i zarzuciłem wam parę tematów które możecie sobie sprawdzić w przyszłości naprawdę
jeśli chodzi o same animacje to jest to studnia bez dna to znaczy
można w tym siedzieć robić naprawdę fajne rzeczy naprawdę skomplikowane
mam nadzieję że zachęciłem was do tego żeby porobić coś
fajnego i ożywić trochę to co się dzieje bo pamiętajmy o tym
że animacje to nie tylko fajny efekt który gdzieś tam się pojawia i nie wiem
spełnia jakieś wymagania jakiegoś designera tylko jednak to jest podpowiedź dla
użytkownika trochę co się dzieje to znaczy widząc na przykład że klikam tutaj przycisk
upgrade i tutaj może nie tak ładnie zrobiony ale jednak a ten
to nasze kółeczko z levelem się powiększa sugeruje co się dzieje gdyby tego nie było to tak naprawdę
uzytkownik nie wiedziałby co konca co się gdzie zmieniło więc animacje są też bardzo
ważne żeby informować i pokazywać użytkownikowi tak naprawdę
co się w aplikacji dzieje i to tyle w tej lekcji dzięki bardzo