Kontynuujemy temat widgetów. Dziś przyszedł czas na dwa kolejne: menu oraz obraz/bitmapę. W porównaniu do wczorajszych widgetów tekstowych są one znacznie bardziej złożone. Dodatkowo menu jako pierwszy z widgetów musi zapewnić interakcję z użytkownikiem i reagować na polecenia manetki. Nie ma na co czekać – do dzieła!
Obraz/bitmapa
na pierwszy rzut oka widget ten nie wydaje się być specjalnie skomplikowany. Musimy przecież tylko narysować dwuwymiarową tablicę pikseli w wyznaczonym punkcie ekranu, a tą funkcjonalność zapewnia nam już przecież biblioteka graficzna. Po dłuższym namyśle zauważymy jednak, że potrzebna będzie konwersja danych z wybranego formatu BMP lub GIF na format strawny dla naszej biblioteki. Dodatkowo musimy uwzględnić różnice w przestrzeni barw. Zazwyczaj korzystamy z palety RGB88, która do opisu każdej składowej głównej używa 8 bitów. Wykorzystywany przez nas wyświetlacz obsługuje jedynie format RGB565, gdzie składowe czerwona i niebieska zawierają jedynie 5 bitów, a składowa zielona – 6. W chwili obecnej jedynym źródłem danych jest dla nas nieulotna pamięć Flash procesora. W przyszłości zostanie dodana obsługa wczytywania plików graficznych z karty SD.
Na deser – proste okno sygnalizujące awarię układu hamulcowego 🙂
Menu
Pierwszym krokiem jest podpięcie naszego widgetu do manetki tak, aby użytkownik mógł przemieszczać się pomiędzy pozycjami. Wykorzystamy w tym celu interfejs opisany w jednym z poprzednich artykułów. W ten sposób widget nie jest zmuszony odnosić się bezpośrednio do sprzętu czy samodzielnie sprawdzać stanu przycisków. Samo menu w obecnej postaci jest dość ascetyczne – priorytetem jest uruchomienie funkcjonalności. Dopieszczenie wyglądu pozostawimy sobie na koniec 😀
Jak widać powoli zaczynamy spinać przygotowane wcześniej kawałki razem – tworząc zaczątki interfejsu użytkownika. Można sobie tylko wyobrazić ile jeszcze możliwości przed nami 🙂
Tyle na dziś 🙂