Android Podstawy tworzenia aplikacji Piotr Fulma«ski Instytut Nauk Ekonomicznych i Informatyki, Pa«stwowa Wy»sza Szkoªa Zawodowa w Pªocku, Polska March 4, 2015
Table of contents
Framework Jednym z najwarto±ciowszych aspektów platform takich jak Android jest framework aplikacji. Przede wszystkim zapewnia on istnienie pewnej wspólnej dla wszystkich aplikacji struktury, w któr mo»na je wpasowa. Korzystanie z frameworków to jak przyj cie umowy. Je±li umie±cimy nasze pliki w odpowiednich miejscach, framework wykorzysta te pliki w znany jemu, okre±lony sposób. Otrzymujemy w ten sposób pewien schemat, którym mo»emy si posªugiwa. Wówczas wiele szablonowych zada«wykonywanych jest za programist, który dzi ki temu mo»e skoncentrowa si na aplikacji a nie na pewnych powtarzalnych detalach (które cz sto wcale takimi detalami nie s ).
Framework Typowe elementy struktury projektu app/src/main/res/layout/activity_my.xml /drawable<density>/ /layout/ /menu/ /values/ app/src/main/java/com.mycompany.myfirstapp/myactivity.java app/src/main/androidmanifest.xml
Podstawowe elementy aplikacji Aplikacje na Android obejmuj kilka podstawowych elementów. Aktywno± (obiekt klasy Activity ). Dziaªa na pierwszym planie. Zarz dza interfejsem u»ytkownika oraz obsªuguje zdarzenia i interakcje. Usªuga (obiekt klasy Service ). Dziaªa w tle. Mo»e obsªugiwa dªugotrwaªe zadania lub monitorowanie. Odbiornik (obiekt klasy BroadcastReceiver). Obejmuje metody obsªugi zdarze«uruchamiane przez rozpowszechniane zdarzenia (intencje) i reaguj ce na nie. Dostawca tre±ci (obiekt klasy ContentProvider). Umo»liwia udost pnianie innym aplikacjom interfejsu API do wymiany danych.
Podstawowe elementy aplikacji Aplikacje na Android obejmuj kilka podstawowych elementów. Aktywno± (obiekt klasy Activity ). Dziaªa na pierwszym planie. Zarz dza interfejsem u»ytkownika oraz obsªuguje zdarzenia i interakcje. Usªuga (obiekt klasy Service ). Dziaªa w tle. Mo»e obsªugiwa dªugotrwaªe zadania lub monitorowanie. Odbiornik (obiekt klasy BroadcastReceiver). Obejmuje metody obsªugi zdarze«uruchamiane przez rozpowszechniane zdarzenia (intencje) i reaguj ce na nie. Dostawca tre±ci (obiekt klasy ContentProvider). Umo»liwia udost pnianie innym aplikacjom interfejsu API do wymiany danych.
Podstawowe elementy aplikacji Aplikacje na Android obejmuj kilka podstawowych elementów. Aktywno± (obiekt klasy Activity ). Dziaªa na pierwszym planie. Zarz dza interfejsem u»ytkownika oraz obsªuguje zdarzenia i interakcje. Usªuga (obiekt klasy Service ). Dziaªa w tle. Mo»e obsªugiwa dªugotrwaªe zadania lub monitorowanie. Odbiornik (obiekt klasy BroadcastReceiver). Obejmuje metody obsªugi zdarze«uruchamiane przez rozpowszechniane zdarzenia (intencje) i reaguj ce na nie. Dostawca tre±ci (obiekt klasy ContentProvider). Umo»liwia udost pnianie innym aplikacjom interfejsu API do wymiany danych.
Podstawowe elementy aplikacji Aplikacje na Android obejmuj kilka podstawowych elementów. Aktywno± (obiekt klasy Activity ). Dziaªa na pierwszym planie. Zarz dza interfejsem u»ytkownika oraz obsªuguje zdarzenia i interakcje. Usªuga (obiekt klasy Service ). Dziaªa w tle. Mo»e obsªugiwa dªugotrwaªe zadania lub monitorowanie. Odbiornik (obiekt klasy BroadcastReceiver). Obejmuje metody obsªugi zdarze«uruchamiane przez rozpowszechniane zdarzenia (intencje) i reaguj ce na nie. Dostawca tre±ci (obiekt klasy ContentProvider). Umo»liwia udost pnianie innym aplikacjom interfejsu API do wymiany danych.
Komponenty ª cz ce Do tworzenia podstawowych elementów aplikacji i ich ª czenia sªu» dodatkowe komponenty. Widoki (obiekty klasy View). S to elementy interfejsu u»ytkownika wy±wietlane na ekranie. Ukªady (obiekty klasy Layout). S to hierarchie widoków kontroluj ce format i wygl d ekranu. Intencje (obiekty klasy Intent). S to komunikaty ª cz ce komponenty ze sob. Zasoby (obiekty klasy Resource). S to elementy zewn trzne, na przykªad ªa«cuchy znaków i obiekty graczne (obrazki). Manifest (obiekt klasy Manifest). Obejmuje konguracj aplikacji.
Komponenty ª cz ce Do tworzenia podstawowych elementów aplikacji i ich ª czenia sªu» dodatkowe komponenty. Widoki (obiekty klasy View). S to elementy interfejsu u»ytkownika wy±wietlane na ekranie. Ukªady (obiekty klasy Layout). S to hierarchie widoków kontroluj ce format i wygl d ekranu. Intencje (obiekty klasy Intent). S to komunikaty ª cz ce komponenty ze sob. Zasoby (obiekty klasy Resource). S to elementy zewn trzne, na przykªad ªa«cuchy znaków i obiekty graczne (obrazki). Manifest (obiekt klasy Manifest). Obejmuje konguracj aplikacji.
Komponenty ª cz ce Do tworzenia podstawowych elementów aplikacji i ich ª czenia sªu» dodatkowe komponenty. Widoki (obiekty klasy View). S to elementy interfejsu u»ytkownika wy±wietlane na ekranie. Ukªady (obiekty klasy Layout). S to hierarchie widoków kontroluj ce format i wygl d ekranu. Intencje (obiekty klasy Intent). S to komunikaty ª cz ce komponenty ze sob. Zasoby (obiekty klasy Resource). S to elementy zewn trzne, na przykªad ªa«cuchy znaków i obiekty graczne (obrazki). Manifest (obiekt klasy Manifest). Obejmuje konguracj aplikacji.
Komponenty ª cz ce Do tworzenia podstawowych elementów aplikacji i ich ª czenia sªu» dodatkowe komponenty. Widoki (obiekty klasy View). S to elementy interfejsu u»ytkownika wy±wietlane na ekranie. Ukªady (obiekty klasy Layout). S to hierarchie widoków kontroluj ce format i wygl d ekranu. Intencje (obiekty klasy Intent). S to komunikaty ª cz ce komponenty ze sob. Zasoby (obiekty klasy Resource). S to elementy zewn trzne, na przykªad ªa«cuchy znaków i obiekty graczne (obrazki). Manifest (obiekt klasy Manifest). Obejmuje konguracj aplikacji.
Komponenty ª cz ce Do tworzenia podstawowych elementów aplikacji i ich ª czenia sªu» dodatkowe komponenty. Widoki (obiekty klasy View). S to elementy interfejsu u»ytkownika wy±wietlane na ekranie. Ukªady (obiekty klasy Layout). S to hierarchie widoków kontroluj ce format i wygl d ekranu. Intencje (obiekty klasy Intent). S to komunikaty ª cz ce komponenty ze sob. Zasoby (obiekty klasy Resource). S to elementy zewn trzne, na przykªad ªa«cuchy znaków i obiekty graczne (obrazki). Manifest (obiekt klasy Manifest). Obejmuje konguracj aplikacji.
Manifest Manifest to plik, w którym zdeniowane s relacje, mo»liwo±ci, uprawnienia i konguracja ka»dej aplikacji na Android. Manifest aplikacji jest punktem wyj±cia do tworzenia (uruchamiania) ka»dej aplikacji na Android. Pierwsz rzecz, jak wykonuje system operacyjny Androida podczas uruchamiania aplikacji jest wczytanie manifestu aplikacji poniewa» to manifest okre±la, które fragmenty kodu nale»y uruchomi. W ±wiecie Androida jednostkami pracy s aktywno±ci. W pliku manifestu aplikacji trzeba wskaza, która klasa aktywno±ci jest punktem wej±cia do aplikacji.
Listing 2.1. Plik manifestu AndroidManifest.xml aplikacji DealDroid <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.manning.aip.dealdroid" android:versioncode="1" android:versionname="1.0"> <application android:icon="@drawable/ddicon" android:label="@string/app_name" android:name=".dealdroidapp"> <activity android:name=".deallist" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".dealdetails" android:label="@string/deal_details" /> </application> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-sdk android:minsdkversion="4" /> </manifest> Manifest
Uprawnienia System uprawnie«androida opisuje wszystkie zadeklarowane w ten sposób zastrze»one operacje, a nast pnie wy±wietla je u»ytkownikowi, gdy jest instalowana aplikacja. Mo»na zadeklarowa takie operacje, jak odczyt lub zapis danych w systemie plików, odczyt lub zapis danych kontaktowych u»ytkownika, mo»liwo± wzbudzenia telefonu, dost p do sieci (internetu) itd. Znacznie rzadziej potrzebne jest deklarowanie i wymuszanie wªasnych niestandardowych uprawnie«, wykraczaj cych poza deklaracje systemowe. Je±li zachodzi potrzeba wykorzystania takich uprawnie«, mo»na je zadeklarowa w manife±cie i wymusza je w komponentach (aktywno±ciach, usªugach, odbiornikach rozpowszechnianych informacji itd.).
Zasoby Zasób to bardzo ogólne okre±lenie. Jako zasoby mo»na deniowa m.in menu, style, animacje, ksztaªty, tablice danych i inne elementy. Zasoby s deniowane przez umieszczanie plików w katalogu /res projektu. Nast pnie dost p do zasobów mo»na uzyska albo w kodzie, albo przez wskazywanie ich w plikach XML.
Zasoby - cechy Wszystkie elementy zadeklarowane w katalogu /res nie tylko s pakowane wraz z aplikacj, ale s te» programowo dost pne w kodzie aplikacji. Zasoby maj kilka kluczowych cech, o których warto pami ta : ka»dy zasób ma identykator; ka»dy zasób ma okre±lony typ; zasoby maj okre±lon lokalizacj i plik, w którym s zdeniowane.
Zasoby cechy Zasoby pozwalaj oddzieli kod od zewn trznych elementów, takich jak obrazki i ªa«cuchy znaków. Taki podziaª jest po»yteczny, poniewa» kod jest wtedy konkretny i przejrzysty. Zasoby s wydajne i szybkie. Zasoby w formacie XML s kompilowane na format binarny. Dzi ki temu s wygodne na etapie programowania i szybkie w czasie wykonywania programu. Zasoby umo»liwiaj obsªug dynamicznego ªadowania w trakcie wykonywania programu na podstawie ró»nych wªa±ciwo±ci ±rodowiskowych, takich jak j zyk, konguracja ekranu si mo»liwo±ci sprz towe.
Zasoby przykªad: napisy Przykªadowy plik zasobów res/values/strings.xml z warto±ciami nazwanych ªa«cuchów znaków <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">my First App</string> <string name="edit_message">enter a message</string> <string name="button_send">send</string> <string name="action_settings">settings</string> <string name="title_activity_main">mainactivity</string> </resources> Wszystkie ªa«cuchy znaków zdeniowane w pliku strings.xml s zapisane jako staªe w klasie R
Zasoby przykªad: ukªad ekranu Przykªadowy plik zasobów res/layout/activity_my.xml opisuj cy ukªad ekranu <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /> </LinearLayout>
Dost p do zasobów Zdeniowane zasoby mo»na wskazywa w kodzie lub w XML-u za pomoc odpowiednich identykatorów. Aby uzyska dost p do zasobu w kodzie, nale»y u»y zdeniowanego w klasie R identykatora, na przykªad R.string.deal_details do zasobu zdeniowanego przez nas lub android.r.string.yes do zasobu systemowego. Zwykle takie identykatory stosuje si w metodach klasy Resources: Resources.getString(R.string.deal_details). Aby uzyska dost p do zasobu w XML-u wystarczy poprzedzi identykator potrzebnego zasobu przedrostkiem @. Ša«cuch znaków deal_details mo»na wskaza tak: @string/deal_details a zasób systmowy tak: @android:string/yes.
Ukªad, widoki i kontrolki Ukªad to specjalny zasób, który sªu»y do projektowania ekranów, tworzenia pozycji na listach i innych elementów interfejsu u»ytkownika w Androidzie.
Aktywno±ci Aktywno± (klasa typu Activity) odpowiada jednej konkretnej rzeczy, jak u»ytkownik mo»e zrobi. Zwykle ka»dy ekran aplikacji jest deniowany za pomoc ukªadu i skªada si z widoków oraz kontrolek obsªugiwanych przez powi zan aktywno±. Ka»da aktywno± tworzy okno interfejsu u»ytkownika, zarz dza cyklem»ycia i stanem, stanowi punkt docelowy intencji, obsªuguje zdarzenia interfejsu, kontroluje menu itd.
Aktywno±ci podstawowe informacje Oto najcz ±ciej u»ywane metod aktywno±ci: Metoda oncreate. Wywoªywana przy tworzeniu obiektu klasy Activity. Metoda onpause. Wywoªywana przy odsuwaniu obiektu klasy Activity w tªo. Metoda onresume. Wywoªywana przy wznawianiu pracy obiektu klasy Activity dziaªaj cego w tle.
Adaptery Przekazywanie danych ze ¹ródªa do widoku odbywa si za po±rednictwem obiektu klasy Adapter. Jak wskazuje nazwa, klasa ta adaptuje okre±lone ¹ródªo danych, a tym samym pozwala podª cza ró»ne rodzaje ¹ródeª danych do widoku (obiektu klasy AdapterView), który nast pnie wy±wietla dane na ekranie.
Intencje i ltry intencji Jedn z wyj tkowych zalet Androida jest elastyczno± w zakresie komunikacji mi dzy komponentami i wymiany danych mi dzy nimi. Android umo»liwia to na podstawie zdarze«opartych na klasach Intent i IntentFilter. Platforma Androida ±ledzi wszystkie deklaracje IntentFilter dost pne w dziaªaj cym systemie, a nast pnie dynamicznie (w czasie wykonywania programu) ª czy zgªaszane intencje z najodpowiedniejszymi komponentami.
Podsumowanie Podstawowymi cegieªkami aplikacji na Android s manifest aplikacji, zasoby, ukªady, widoki, aktywno±ci i intencje. Manifest obejmuje konguracj aplikacji, a zasoby to przechowywane zewn trznie elementy (na przykªad ªa«cuchy znaków i rysunki). Kod pojawia si w aktywno±ciach, które pobieraj zasoby i ukªady. Ukªady to zbiory widoków porz dkuj ce interfejs u»ytkownika na ekranie lub w komponencie. Ukªady cz sto s zapisywane w formacie XML i przeksztaªcane na klasy w czasie wykonywania programu, co dodatkowo pomaga rozdziela elementy aplikacji. Aktywno±ci na podstawie widoków i kontrolek tworz wy±wietlane u»ytkownikowi elementy, z którymi mo»na wchodzi w interakcje. Intencje ª cz komponenty, a nawet ró»ne aplikacje.