MójDroid.pl

#2 Twórz aplikacje na Androida z Mojdroid.pl – Podstawowe elementy (przed Androidem 4.0)

2012-09-13
|
Damian P.

Zanim zaczniemy pisać kod, który pozwoli nam tworzyć aplikacje, najpierw będziemy musieli poznać nieco podstawowych zagadnień, na których opiera się cały system operacyjny. Jest tego całkiem sporo, a każdy z elementów jest ważny, bo służy do czegoś innego, co w przyszłości może być przydatne w naszym programie. W drugiej części artykułu o tworzeniu aplikacji na Androida przedstawię wam podstawowe elementy, które obecne są praktycznie w każdej aplikacji. Postaram się opisać każdy z elementów możliwie jak najprościej, aby ogólnie zapoznać was z ważniejszymi elementami. Jeżeli widzisz gdzieś błąd - napisz do mnie lub zamieść poprawkę w komentarzach.

Dlaczego przed Androidem 4.0?

Ice Cream Sandwich to pierwsza wersja systemu, która wprowadziła tak wielkie zmiany od strony programistycznej. Podstawowe elementy oczywiście się nie zmieniły, ale panowie z Google dodali masę, naprawdę gigantyczną ilość rzeczy, dzięki którym aplikacje tworzone od tego czasu mogą wyglądać świetnie. Tyczy się to na przykład ActionBara (ten pasek na górze, w ikonkami), przewijanych stron w aplikacjach, list czy nawet zasady działania programu. Dodano również wsparcie dla kolejnych rozdzielczości, nowe narzędzia w folderze z dodatkami i tak dalej... Oczywiście te elementy również opiszę, ale zrobię to później. Najpierw poznamy podstawy, z którymi będziemy spotykać się w każdej aplikacji, nie zależnie od przeznaczenia, na którą wersję systemu trafi.

Activity

Podstawowa część każdej aplikacji. W skrócie jest to pojedyncza reprezentacja aplikacji, w której możemy utrzymywać kolejne elementy, jak Widoki (Views) czy Listy (Lists), aby stworzyć interfejs (widoczny lub nie dla użytkownika). Zazwyczaj programy na Androida posiadają kilka Activities, gdzie każde kolejne Activity to inny ekran czy funkcjonalność. W taki sposób łatwo jest zachować jakiś podział w programie - jedno Activity może służyć do pokazywania i obsługi menu, inne do wyświetlania artykułu czy zdjęć lub gry. Przyjrzyjcie się zainstalowanym programom - każde "otwarcie" nowego okna to zazwyczaj nowe Activity. Activity używamy jako rozszerzenia dla naszej klasy. Aby całość poprawnie działała, przy dodawaniu importu należy w kodzie programu dodać kilka funkcji, które obsłużą nam wydarzenia (nie bójcie się tego dziwnego słownictwa, po prostu zapamiętajcie występowanie tych elementów, a za chwilę wszystko stanie się jasne):
  • onCreate(Bundle bundle) - otwarcie/rozpoczęcie nowego Activity. Kod w tej części programu będzie wykonany od razu, kiedy nowe Activity zostanie stworzone. Zazwyczaj ustalamy tutaj wygląd przez ustawienie setContentView(int layout), przygotowujemy listy i poszczególne elementy do obsługi danych i tak dalej... Kod w tym miejscu jest odtwarzany tylko raz!
  • onPause() - zatrzymanie (nie zakończenie!) Activity, poprzez na przykład wyjście do launchera. Zazwyczaj w tym miejscu powinniśmy zadbać o poprawne zapisanie stanu, jeżeli przypadkiem aplikacja została by zakończona (w przypadku na przykład małej ilości pamięci). Nie jest to wymagane, ale warto się z tym zapoznać.
  • onResume() - wznowienie pracy aplikacji, wołana zawsze wtedy, gdy aplikacja dostaje rozkaz działania.
I tak dalej... W tym miejscu warto wspomnieć o tym, w jaki sposób Activity żyje. W prosty sposób zobrazuje to ten graf: Więcej tłumaczyć nie trzeba - Activity ma cztery główne stany, między którymi występują odpowiednie funkcje, uruchamiane dokładnie wtedy, gdy system odtworzy kolejny stos. Każda z metod jest opcjonalna i nie musi być wywoływana. Należy tu oczywiście pamiętać o kolejności Activity - jeżeli z jednego uruchomimy kolejne, to zamykając to nowsze zauważymy starsze. Jednocześnie Activity nie występuje wyłącznie przy importowaniu do klasy. Aby Activity było poprawnie rozpoznane przez system, musimy opisać je w pliku AndroidManifest.xml, który - w skrócie - jest plikiem konfiguracyjnym aplikacji. Jest on wymagany przez każdy program czy grę. Więcej o Activity w witrynie Android Developers.

2. Widok (View)

Views to nic innego jak poszczególne elementy widoczne w interfejsie - przyciski, pola, przełączniki. Nazwa w języku Polskim może nieco mylić, ale co zrobić... Podstawową klasą, z której korzystają wszystkie te widoki, jest klasa android.view.View. Oczywiście, jak pewnie się spodziewacie, każdy element ma swoje atrybuty, które możemy dowolnie konfigurować. Ale o tym jeszcze nie teraz. ViewGroup natomiast jest odpowiedzialne za pozycjonowanie i gromadzenie pojedynczych widoków. Jest to po prostu layout (szablon) i za niego odpowiedzialna jest klasa android.view.ViewGroup.

3. Intent

Kojarzycie przycisk Udostępnij (Share) w różnych aplikacjach? To właśnie są Intents. Mówiąc bardziej fachowym językiem, są to niesynchronicznie wiadomości, które pozwalają aplikacji zażądać pewną funkcjonalność z innych komponentów Androida. Przykładowo, w swojej aplikacji możemy tworzyć filtry na zdjęcia, ale aby móc cokolwiek zrobić, musimy wykonać wcześniej fotografię. Wykorzystać do tego możemy standardową aplikację Androida od kamery lub inną, którą przypisał użytkownik. Intent jest rejestrowany w pliku AndroidManifest.xml i pozwala wyznaczonym elementom wykonywać wyznaczone zadania.

4. Service

Są to po prostu procesy w tle bez stworzonego interfejsu graficznego. Zazwyczaj używamy ich do pobierania dużych plików i powiadamiania użytkownika o postępie.

5. ContentProvider

Przez ContentProvidera twoja aplikacja może dzielić swoje dane z innymi programami. Ot tyle, albo aż tyle.

6. BroadcastReciver

Kolejny z elementów, który jest mocno zintegrowany z systemem przez główny plik konfiguracyjny w aplikacji. Przez BroadcastReciver możemy otrzymywać wiadomości systemowe oraz Intenty. Przykładowo, w aplikacji możemy ustawić Broadcast na uruchamianie systemu, i gdy ten się wykona, Android może uruchomić od razu naszą aplikację. Podobnych działań jest więcej, do najczęściej używanych zaliczamy moduł telefonu i wiadomości tekstowych.

7. Widget

Widgety to interaktywne komponenty, które przeważnie ustawiane są na pulpicie, aby przekazywać użytkownikowi pewną porcję danych lub funkcjonalności. Czym one są raczej nie muszę pisać, każdy ma w systemie kilka dodatków z tej serii, czy to zegar czy kalendarz...