LVGL

Praca z widgetem LVGL Animated Image

Jak działa widget LVGL animated image: prześlij sekwencję klatek o tym samym rozmiarze, ustaw czas trwania i pętlę, a potem odtwarzaj animacje klatka po klatce na wyświetlaczu.

ED Ed
lvgl animated-image animimg animation frames picopixel
ZAKTUALIZOWANO 2026-05-29
01 /10

Omówienie

Widget animated image to najprostszy sposób na dodanie ruchu do ekranu: obracający się loader, odbijająca ikona, mrugające oko. Ten przewodnik wyjaśnia, jak działa widget LVGL animated image w PicoPixel: jak go dodać, dlaczego każda klatka musi mieć ten sam rozmiar, jak sterować szybkością i zapętlaniem oraz jak uruchamiać i zatrzymywać animację podczas działania interfejsu.

02 /10

Czym jest widget animated image?

Animated image odtwarza sekwencję nieruchomych obrazów jeden po drugim, jak flipbook. Każdy obraz to klatka, a szybkie przechodzenie między nimi tworzy iluzję ruchu. Dajesz mu zestaw klatek, mówisz, jak szybko ma grać i czy ma się zapętlać, a resztę robi sam.

Świetnie nadaje się do jednej, powtarzalnej animacji: spinnera ładowania, pulsującego serca, machającej dłoni. Jeden widget, jedna sekwencja, odtwarzana w pętli.

NOTE

Pod spodem jest to widget LVGL lv_animimg. Gdy eksportujesz projekt, PicoPixel pisze kod LVGL za Ciebie (lv_animimg_create, lv_animimg_set_src, lv_animimg_set_duration itd.), więc nie musisz go dotykać. Celuje w LVGL 8.x.

03 /10

Animated image czy sprite - czego użyć?

Te dwa widgety wyglądają podobnie, ale rozwiązują różne problemy:

  • Animated image, jedna animacja w pętli. Wybierz go, gdy grafika robi tylko jedną rzecz, np. spinner, który się kręci.
  • Sprite, kilka animacji w jednym widgetcie, z możliwością przełączania między nimi (Idle, Running, Happy…). Wybierz go, gdy grafika potrzebuje więcej niż jednego trybu.

W praktyce sprite jest zbudowany z animated images; każdy jego tryb jest osobnym animated image pod spodem. Jeśli więc chcesz przełączać na drugą animację, to znak, że powinieneś użyć sprite'a.

04 /10

Dodawanie animated image i przesyłanie klatek

  1. Dodaj widget Animated Image do ekranu.
  2. W jego właściwościach znajdź wiersz Image Set i kliknij Add Image Set.
  3. Na karcie NEW kliknij obszar przesyłania ("Click to upload frames") i wybierz obrazy. Możesz wybrać wiele naraz; formaty to PNG i JPEG (.png, .jpeg, .jpg).
  4. Kliknij Continue, aby podłączyć klatki do widgetu. Wiersz Image Set pokaże teraz liczbę klatek, np. "8 frames".

Możesz też wziąć użyty wcześniej zestaw klatek z karty Assets, zamiast przesyłać go ponownie.

Edytor PicoPixel pokazujący widget animated image z załadowanym 9-klatkowym sprite'em Nyan Cat, paskiem klatek na dole oraz panelem właściwości po prawej z ustawieniami image set, repeat, duration i playback
▸ Animated image z załadowanymi klatkami i skonfigurowanymi właściwościami: 9 klatek, 1000 ms, nieskończone powtarzanie, odtwarzanie.
TIP

Klatki są sortowane alfabetycznie według nazwy pliku, więc nazwij je po kolei z zerami wiodącymi, frame_01.png, frame_02.png, frame_03.png, aby mieć pewność poprawnej kolejności. Nazwa frame_2.png posortuje się po frame_10.png, co pomiesza animację.

NOTE

Animated image potrzebuje co najmniej 2 klatek, a maksymalnie możesz dodać 32. Jeśli potrzebujesz więcej ruchu, rozważ mniej, ale dobrze dobranych klatek kluczowych; każda klatka jest przechowywana na urządzeniu.

05 /10

Dlaczego wszystkie klatki muszą mieć ten sam rozmiar

To najważniejsza zasada: każda klatka musi mieć dokładnie tę samą szerokość i wysokość. Jeśli spróbujesz dodać klatki o różnych rozmiarach, PicoPixel zatrzyma Cię komunikatem "All frames must have the same dimensions."

Powód jest prosty. Widget rysuje każdą klatkę w tym samym miejscu, w tym samym polu. Jeśli klatka 1 ma 64×64, a klatka 2 ma 80×80, obraz będzie przeskakiwał zamiast płynnie animować się w miejscu. Identyczny rozmiar klatek sprawia, że ruch wygląda czysto.

WARNING

Dopasuj rozmiar klatek przed przesłaniem. Najszybszy sposób na czystą sekwencję to eksport każdej klatki z tego samego canvasu w narzędziu graficznym, dzięki czemu wymiary będą wspólne.

06 /10

Ustawianie szybkości: duration

Ustawienie Duration kontroluje szybkość animacji. Jest mierzone w milisekundach (ms) i oznacza czas jednego pełnego przejścia przez wszystkie klatki, nie czas pojedynczej klatki. Domyślnie to 1000 ms (jedna sekunda).

PicoPixel dzieli ten czas równo między klatki. 1000 ms rozłożone na 8 klatek oznacza 125 ms na klatkę. Chcesz szybciej? Zmniejsz duration. Wolniej i spokojniej? Zwiększ je.

07 /10

Zapętlanie: raz czy na zawsze

Ustawienie Repeat decyduje, co stanie się po dojściu animacji do końca. Masz dwie opcje:

  • Infinite, animacja zapętla się bez końca. To domyślne ustawienie, dobre dla spinnera, który nie powinien przestawać.
  • Normal (a count), animacja odtwarza się podaną liczbę razy i zatrzymuje. Ustaw 3, a wykona trzy przebiegi i zostanie na ostatniej klatce.
08 /10

Sterowanie odtwarzaniem podczas działania UI

Nie musisz pozwalać animacji działać automatycznie: możesz ją uruchamiać i zatrzymywać w odpowiedzi na działania użytkownika, używając edytora zdarzeń. Dodaj zdarzenie, wybierz akcję Animated Image Mode, wskaż animated image i wybierz tryb:

  • Start, zacznij (albo wznów) odtwarzanie.
  • Stop, wstrzymaj animację.
  • Restart, wróć do pierwszej klatki i odtwórz od nowa.

Przykład: trzymaj spinner "connecting…" zatrzymany, aż użytkownik naciśnie przycisk, potem użyj Start, a po zakończeniu zadania użyj Stop.

09 /10

Oszczędzanie pamięci

Animacje to obrazy, a obrazy zajmują miejsce na małym urządzeniu. Kilka nawyków pomaga zachować wydajność:

  • Używaj tylko potrzebnych klatek. Płynny ruch rzadko wymaga więcej niż kilku dobrze dobranych klatek.
  • Trzymaj skromne wymiary klatek. Animacja 64×64 jest znacznie lżejsza niż 240×240.
  • Dopasuj głębię koloru do wyświetlacza (zobacz tutorial ESP32, aby dowiedzieć się więcej o budowaniu na prawdziwy hardware).
TIP

Jeśli eksportujesz firmware, animated image wymaga włączenia LV_USE_ANIMIMG w lv_conf.h. PicoPixel zapisuje tę informację w wyeksportowanym README.md, aby build (albo asystent AI) dokładnie wiedział, co włączyć.

10 /10

Następne kroki

CZYTAJ DALEJ

Idziemy dalej.

Jak używać zwierzaków w PicoPixel thumbnail
PICOPIXEL

Jak używać zwierzaków w PicoPixel

Zwierzak to gotowy animowany sprite z wieloma trybami, które możesz wyzwalać przy dowolnym warunku. Wybierz go z katalogu, dodaj do projektu i podłącz tak, aby reagował na to, co robi urządzenie: pobieranie danych, przegrzewanie, przegląd kodu, cokolwiek.

pets · sprites · picopixel
Jak używać szablonów PicoPixel, UI kitów i pełnych aplikacji thumbnail
PICOPIXEL

Jak używać szablonów PicoPixel, UI kitów i pełnych aplikacji

Znajdź szablony PicoPixel, UI kity, przykłady, sprite'y, widgety i pliki pełnych aplikacji, a potem otwieraj, pobieraj, importuj, dostosowuj i eksportuj je jako kod C LVGL dla swojego urządzenia.

templates · ui-kits · full-apps
Czym jest sprite? thumbnail
PICOPIXEL

Czym jest sprite?

Dowiedz się, czym są sprite'y, jak tworzyć wielostanowe animowane widgety i jak używać ich ponownie w projektach.

sprite · picopixel