czwartek, 22 listopada 2012

Horoskop

   Niniejsza aplikacja powstała już jakiś czas temu na prośbę jednego z potencjalnych pracodawców. Czasem tak jest, że kandydat jest proszony o napisanie próbnej aplikacji tak by pracodawca mógł sprawdzić jak sobie osoba starająca się o pracę poradzi. Produktem takiej działalności jest właśnie Horoskop.

   Aplikacja jest ekstremalnie prosta - posiada tylko dwa widoki. Listę znaków zodiaku i widok szczegółowy, który pojawia się po wybraniu jednego ze znaków.


  Ale tak na prawdę to chodzi w niej o to co dzieje się "pod maską".

Pierwszy widok jest to lista znaków zodiaku (ikona graficzna reprezentująca znak i nazwa), drugi widok zawiera treść pojedynczego horoskopu wraz z ikoną i możliwością odświeżenia danych (ponownego pobrania ich z serwera).



Dane do aplikacji pobierane są z jednego z serwisów internetowych w postaci pliku JSON z zakodowanym horoskopem na cały tydzień dla wszystkich znaków. Symbole znaków również pobierane są z internetu. Przy czym grafiki są pobierane z sieci tylko przy pierwszym uruchomieniu aplikacji i "cache'owane" w telefonie.
Horoskop wygląda dobrze zarówno w trybie portretowym, jak i w trybie "landscape" (jeśli tekst się nie mieści, to można go przewijać).


Jeśli chodzi o interfejs użytkownika, to dzięki zastosowaniu Fragments aplikacja wygląda również dobrze na ekranie tabletu.




   Ogólnie rzecz biorąc Horoskop jest przykładem zastosowania sporej liczby technologii i możliwości Androida.
   Tak więc poza wykorzystaniem Fragments do tworzenia interfejsu graficznego dzięki czemu jedną, wspólną bazą kodu obsługuję i telefony i tablety (wystarczy tylko osobny plik z opisem layoutu aplikacji dla tabletu) jest w niej przykład pobierania danych z webserwisu i parsowania ich z formatu JSON.
Grafiki pobierane są w niezależnych wątkach, dzięki czemu nawet przy pierwszym starcie aplikacja jest interaktywna i responsywna a same grafiki pojawiają się stopniowo w miarę postępów pobierania. Do tego celu wykorzystalem bibliotekę LazyList.
Same dane z horoskopami pobierane i parsowane są również w tle z wykorzystaniem Services, które informują Broadcastem widok wyświetlający dane szczegółowe o konieczności przeładowania zawartości kontrolek. Tak więc również pobieranie danych i parsowanie JSONa również nie wpływa negatywnie na responsywność aplikacji.

   Po raz pierwszy postanowiłem kod zamieścić w publicznym repozytorium. Tak więc kod aplikacji można znaleźć na serwisie github.

To tyle :-)

Brak komentarzy:

Prześlij komentarz