SW 05eh(full permission)


Systemy Wbudowane
Dr inż. Mariusz Fraś
Android
cz. 1 - podstawy
© maf 1
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Android - podstawy
" Open Handset Alliance
Konsorcjum (sojusz) 78 firm mający na celu rozwój otwartych
standardów dla urządzeń mobilnych
Google, High Tech Computer (HTC), Dell, Intel, Motorola,
Qualcomm, Texas Instruments, Samsung, &
Produkt sojuszu: Android  oparty na licencji open source
" Wersje systemu Android
% rynku
Nazwa dydstrybucji Nr wersji Wersja API
(marzec 2013)
Jelly Bean 4.2.x 17 1,6
Jelly Bean 4.1.x 16 14,9
Ice Cream Sandwitch 4.0.x 14-15 28,6
Honeycomb 3.x.x 11-13 1,2
Gignerbread 2.3.x 9-10 44,2
Froyo 2.2 8 7,6
Eclair 2.0 i 2.1 7 1,9
Donut 1.6 4 0,2
Cupcake 1.5 3 ?
© maf 2
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Android - podstawy
© maf 3
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Android - podstawy
" Podstawowe cechy
JÄ…dro Linux 2.6.x i 3.0.x (od Android 4.0)
Wirtualna maszyna Dalvik (DVM)
" Optymalizowana dla urządzeń mobilnych
Pełna wielozadaniowość
Brak obsługi czasu rzeczywistego
Otwarte środowisko aplikacji: wielokrotne użycie i wzajemna
wymiana komponentów
Relacyjna baza danych SQLite
Wsparcie:
" Zoptymalizowana grafika ze wspomaganiem sprzętowym
2D: Google Skia, 3D: Open GL ES
" Obsługa multimediów (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
" Telefonia GSM, Bluetooth, EDGE, 3G, Wi-Fi
" Obsługa aparatu fotograficznego, GPSa, akcelerometra, kompasu
" Zintegrowana przeglÄ…darka oparta na silniku WebKit
Obsługa HTML 5
© maf 4
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Android - podstawy
" Architektura systemu
© maf 5
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Android - podstawy
" Maszyna wirtualna Dalvik (DVM)
Kod bajtowy aplikacji systemu Android jest uruchamiany w Dalvik
VM
Charakterystyka DVM
" Generowanie kodu maszynowego oparte na rejestrach (w JVM na
stosach redukcja liczby instrukcji)
" Zoptymalizowana do działania na urządzeniach o ograniczonych
zasobach (pamięć, moc obliczeniowa, brak pliku wymiany)
" Zoptymalizowana do jednoczesnego, wydajnego uruchamiania wielu
swoich instancji
" Pliki kodu bajtowego klas Java (*.class) przetwarzane na kod bajtowy
w formacie Dalvik Executable (*.dex)
Eliminacja informacji powtarzajÄ…cych siÄ™ w plikach klas
Plik DEX ma mniejszy rozmiar w stosunku do pliku JAR
" Od wersji Android 2.2 wbudowany kompilator JIT (Just In Time)
© maf 6
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Android - podstawy
" Åšrodowisko programowania
Język Java
" Ponad 40 pakietów i 700 klas
(najważniejsze w android.*)
" Możliwe wstawki C/C++
Platforma programistyczna
" Java 2 SE (min. JDK 5)
" Android SDK
" Eclipse IDE (min. 3.3)
" ADT  wtyczka do Eclipse
obsługująca Android SDK
Emulator systemu
" AVD (Android Virtual Device)
" Symulowany 32-bitowy tryb
ARM - na symulowanym
procesorze uruchamiany jest
Linux i platforma Android
" Naśladuje większość funkcji urządzenia
Ograniczenia: połączenia USB i Bluetooth, obsługa słuchawek, symulacja
baterii, symulacji stanu połączenia do sieci, realizacji połączeń telefonicznych
© maf 7
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Architektura aplikacji
" Struktura i elementy koncepcyjne aplikacji
Aplikacje sÄ… uruchamiane w oddzielnych instancjach Dalvik VM
" W oddzielnych procesach, w środowisku chronionej pamięci
Każdy proces ma własny identyfikator ID i przydzielony priorytet
Aplikacja składa się z wielu składników posiadających swój
własny cykl życia
Aktywność
Widok
(activity)
(view)
Intencja
Odbior. komunik.
(intent)
Interakcje
(broadcast receiver)
Usługa Dostawca treści
(service) (content provider)
© maf 8
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Architektura aplikacji
" Aktywność (activity)
Element aplikacji przeznaczona do wykonywania przez użytkownika akcji, czynności
Jednostka interfejsu użytkownika - reprezentuje ekran/okno aplikacji (każdy ekran
aplikacji jest oddzielną aktywnością)
Może zawierać widoki (view)
" Aktywność wyświetla interfejs użytkownika złożony z widoków
Reaguje na zdarzenia
" Uruchamiana przez intencję lub przez inną aktywność
W danym momencie użytkownik może być w interakcji z jedną aktywnością
W aplikacji możliwe jest uruchamianie aktywności z innych aplikacji
Aktywności są grupowane i przechowywane na stosie
Aktywność
Widok
(activity)
(view)
Intencja
Odbior. komunik.
(intent)
Interakcje
(broadcast receiver)
Usługa Dostawca treści
(service) (content provider)
© maf 9
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Architektura aplikacji
" Widok (view)
Element interfejsu użytkownika
Rysowany obiekt  składnik interfejsu
" Mający kształt etykiety, przycisku, pola edycyjnego, itp.
" Usługa (service)
Proces działający  w tle (przez dłuższy czas)
Nie posiada interfejsu użytkownika
Może być lokalna (w bieżącej aplikacji) lub zdalna (łączy się z innymi
aplikacjami)
Aktywność
Widok
(activity)
(view)
Intencja
Odbior. komunik.
(intent)
Interakcje
(broadcast receiver)
Usługa Dostawca treści
(service) (content provider)
© maf 10
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Architektura aplikacji
" Odbiornik komunikatów (broadcast receiver)
Umożliwia odbieranie komunikatów o zdarzeniach i odpowiadanie
na nie (np. niski stan baterii, pobranie danych, połączenie
przychodzące, wykonanie zdjęcia itp.)
" Komunikaty mają formę intencji (intent) i są rozgłaszane przez system
lub przez inne aplikacje
Nie posiada interfejsu
" Może tworzyć powiadomienia w pasku stanu
Aktywność
Widok
(activity)
(view)
Intencja
Odbior. komunik.
(intent)
Interakcje
(broadcast receiver)
Usługa Dostawca treści
(service) (content provider)
© maf 11
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Architektura aplikacji
" Dostawca treści (content provider):
Abstrakcyjne zródło danych (dostawca lub adresat usług REST)
" Dla: system plików, baza SQLite, sieć
Udostępnia zródło danych
" Zapewnia dostęp do składowanych danych
" Umożliwia odczyt i zapis danych
Umożliwia współdzielenie danych między aplikacjami
Aktywność
Widok
(activity)
(view)
Intencja
Odbior. komunik.
(intent)
Interakcje
(broadcast receiver)
Usługa Dostawca treści
(service) (content provider)
© maf 12
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Architektura aplikacji
" Intencja (intent)
Abstrakcyjny opis operacji, która ma być wykonana
Definiuje możliwość wykonania czynności (np. uruchomianie aktywności,
uruchomianie usługi, nadawanie komunikatu itp.)
Wykorzystywana przez aplikacje lub przez system do powiadamiana różnych
składników aplikacji o zdarzeniach
Dla aktywności i usług intencja definiuje akcję do wykonania (VIEW, PICK,
EDIT) i mogą specyfikować dane do przetworzenia (w formie URI danych)
Dla odbiorników komunikatów definiuje rozgłaszany komunikat
Może być jawna lub niejawna
Aktywność
Widok
(activity)
(view)
Intencja
Odbior. komunik.
(intent)
Interakcje
(broadcast receiver)
Usługa Dostawca treści
(service) (content provider)
© maf 13
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Cykl życia aplikacji
" Cykl życia aktywności
Cykl życia aplikacji związany jest z cyklem życia jego składowych
" Cyklem życia zarządza system
Aktywność zmienia stan w zależności od działań użytkownika
(zamykanie okna, przywracanie itp.)
" Przy zmianie stanu wykonywana jest odpowiednia metoda aktywności
Metoda Znaczenie
onCreate()
Pierwsze utworzenie aktywności: inicjalizacja, tworzenie interfejsu użytkownika.
onStart()
Uruchomienie aktywności.
Ponowne uruchomienie aktywności (przywrócenie na pierwszy plan), przejście ze
onRestart()
stanu STOPPED do stanu działania.
onResume()
Przejście na pierwszy plan ze stanu PAUSED do stanu działania RESUMED.
Wstrzymanie aktywności (w stan PAUSED), gdy inna aktywność przechodzi na
onPause()
pierwszy plan (bieżąca aktywność jest widoczna, ale częściowo zasłonięta).
Ostatnia bezpieczna metoda wywoływana przed zamknięciem aplikacji.
onStop()
Aktywność na drugim planie (stan STOPPED, nie już widoczna).
onDestroy()
Usuwanie i zakończenie działania aktywności.
© maf 14
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Cykl życia aplikacji
" Cykl życia aktywności
Użytkownik wywołuje
aktywność
Inna aktywność przechodzi
na pierwszy plan Aktywność przechodzi
na pierwszy plan
W pierwszej kolejności
Inna aplikacja żąda
pamięci
Aktywność przechodzi na
usuwane sÄ… aplikacje o niskim
Aktywność nie jest już
pierwszy plan
widoczna
(użytkownik aktywuje ją)
priorytecie, np. usługa
działająca w tle ma wyższy
Aktywność kończy działanie lub
jest zabijana przez system
priorytet niż aktywność
znajdujÄ…ca siÄ™ na dnie stosu.
© maf 15
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Cykl życia aplikacji
" Szkielet aplikacji  metody zmiany stanu (callbacks)
public class PrzykladSzkieletu extends Activity {
obiekt zawierajÄ…cy
@Override
poprzedni stan
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
// aktywność jest tworzona
@Override
}
protected void onPause() {
@Override
super.onPause();
protected void onStart() {
// inna atywność przejmuje fokus
super.onStart();
// (ta aktywność będzie pauzowana).
// aktywność ma się stać widoczna
}
}
@Override
@Override
protected void onStop() {
protected void onResume() {
super.onStop();
super.onResume();
// aktywność jest niewidoczna
// aktywność stała się widoczna
// (jest zatrzymywana)
// (jest wznowiona)
}
}
@Override
...
protected void onDestroy() {
super.onDestroy();
// aktywność będzie usunięta
callbacks
} }
© maf 16
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Struktura aplikacji
" Struktura aplikacji
Szablon generowany automatycznie po utworzeniu projektu
Skład:
" Nazwa.java  kod zródłowy głównej klasy
" AndroidManifest.xml  deskryptor aplikacji
Określa zawartość i zachowanie aplikacji
Deklaruje składniki aplikacji (aktywności, usługi, dostawców treści, odbiorniki
kom.), uprawnienia konieczne do działania aplikacji i wymagania sprzętowe
" R.java  kod klasy R, identyfikatory zasobów
" main.xml  główny plik zasobów
Pliki zasobów
Opis i definicja interfejsu (układu graficznego)
" strings.xml  dodatkowe zasoby
Struktura katalogów
/assest
Dowolne dane (nieskompresowane), nie traktowane jak zasoby
/bin Pliki binarne *.class, *.dex, *.apk
/gen
Pliki generowane (plik R.java) posegregowane na pakiety
/res
Zasoby aplikacji
/src Pliki zródłowe *.java posegregowane na pakiety
© maf 17
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Struktura aplikacji
" AndroidManifest.xml
W węzłach deklaruje składniki aplikacji, uprawnienia konieczne do
działania aplikacji i inne elementy
"  główny węzeł pliku
Zawiera pola:
android= przestrzeń_nazw_Androida , oraz
package= nazwa_pakietu  nazwÄ™ pakietu aplikacji
Musi zawierać węzeł
"  określa wymagane rozmiary ekranu:
small, normal, large, extra large
i rozdzielczość:
low, medium, high, extra high
"  określa uprawnienia, które muszą być udzielone
aplikacji w czasie instalacji
Konieczne do prawidłowego działania aplikacji
Przykładowe uprawnienia:
READ_CONTACTS, WRITE_CONTACTS  do odczytu/zapisu listy kontaktów
RECEIVE_SMS, SEND_SMS  do odbioru i wysyłania wiadomości SMS
BLUETOOTH  uprawnienie do Å‚Ä…czenia siÄ™ z urzÄ…dzeniami Bluetooth
© maf 18
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Struktura aplikacji
" AndroidManifest.xml
Węzły (c.d.)
"  określa kompatybilność aplikacji z wersjami Android
(minimalnÄ… wymaganÄ… wersjÄ™ API i/lub docelowÄ… i/lub maksymalnÄ…)
"  określa wymagania sprzętowe
np. aparat fotograficzny, Bluetooth itp.
"  deklaruje aplikację, opisuje jej właściwości,
zawiera węzły:
Te elementy mogÄ…
 deklaruje aktywność
posiadać własne filtry
intencji
 deklaruje usługę

 deklaruje odbiornik komunikatów
precyzujące, które
 deklaruje dostawcę treści
intencje będą
obsługiwane
 deklaruje użycie dodatkowych bibliotek
© maf 19
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Struktura aplikacji
" AndroidManifest.xml - przykład

package="org.mojpakiet"
Nazwa głównego pakietu jest kojarzona
android:versionCode="1"
z nazwą aktywności i jej klasą:
android:versionName="1.0"> org.mojpakiet.Jeden

wersja API (10=Android 2.3)
android:icon="@drawable/ic_launcher"
ikona aplikacji (w zasobach)
android:label="@string/app_name">
nazwa aplikacji (w string.xml)
deklaracja aktywności
android:label="@string/app_name"
android:name=".Jeden">
Filtr intencji dla aktywności. Definiuje jak
(czym) można aktywować aktywność.




Określenie aktywności początkowej. Przy uruchamianiu
aplikacji odczytywany jest plik manifestu, wyszukiwane sÄ… i

uruchamiane aktywności o akcji MAIN i kategorii LAUNCHER.

© maf 20
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Elementy interfejsu
" Koncepcja interfejsu użytkownika
Podstawowe składniki interfejsu
" Widok (View)  kontrolka
Widok kontroluje prostokÄ…tny obszar
wewnÄ…trz okna
Podstawowy element interfejsu użytkownika
Ma przypisany unikalny ID
" Pojemnik (GroupView)
Kontener służący do przechowywania
innych widoków
" Układ graficzny (Layout)
Layoutjest niewidocznym pojemnikiem rozszerzajÄ…cym klasÄ™ ViewGroup
Układ graficzny  zarządza rozmieszczeniem kontrolek wewnątrz pojemnika
Widoki mogą być opisane w plikach XML
Okno
" Domyślnie okno aktywności zajmuje całą powierzchnię ekranu
" Zawartość jest podporządkowana hierarchii widoku
" Układy widoków są określany za pomocą obiektów klasy Layout
© maf 21
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Elementy interfejsu
" Układy graficzne
Układy graficzne (layout / layout manager)
" Kontenerowe klasy widoku, pełniące rolę pojemników na widoki
" ZarzÄ…dzajÄ… rozmiarami, rozmieszczeniem i pozycjonowaniem
elementów podrzędnych (kontrolek lub innych układów)
" Idea podobna jak w Swing
© maf 22
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Elementy interfejsu
" Widoki / kontrolki
© maf 23
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Tworzenie interfejsu użytkownika
Metoda programowa  niezalecana
" Interfejs definiowany bezpośrednio w kodzie zródłowym Java
" Trudności w wiązaniu i kojarzeniu ze sobą elementów interfejsu
" Małe zmiany w interfejsie mogą wymagać dużych zmian w kodzie
zródłowym Java
Metoda deklaracyjna (deklaratywna)  zalecana
" Metoda inspirowana modelem tworzenia aplikacji MVC
" Interfejs definiowany w oparciu o pliki XML zapisywane w urzÄ…dzeniu
w postaci binarnej
Separacja warstwy prezentacji (widoku) od warstwy logiki (kodu)
Można zmieniać wygląd i zachowanie aplikacji poprzez edycję plików XML
Kompilowane narzędziem AAPT (ang. Android Asset Packaging Tool)
" Struktura pliku XML ma postać drzewa elementów, w którym każdy
węzeł opisuje właściwość elementu interfejsu
© maf 24
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Klasa główna  kod zródłowy Jeden.java
metoda programowa  niezalecana
package org.mojpakiet;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
public class Jeden extends Activity {
@Override
aktywność początkowa
public void onCreate(Bundle savedInstanceState)
(najwyższego poziomu)
{
metoda wywoływana gdy
super.onCreate(savedInstanceState);
aktywność rozpoczyna działanie
LinearLayout mv = new LinearLayout(this);
utworzenie układu graficznego
TextView tv = new TextView(this);
utworzenie widoku TextView
tv.setText( Witaj! Tu Jeden. );
i ustawienie napisu
mv.addView(tv);
dodanie widoku TextView do układu
setContentView(mv);
przypisanie układu do okna ekranu - wyświetlenie układu
}}
© maf 25
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Definiowanie widoków i odnośniki w kodzie Java
Zdefiniowanie widoku w pliku XML zasobów i przypisanie ID
main.xml  główny plik zasobów  dla głównej aktywności
Węzeł w pliku XML opisuje właściwości elementu interfejsu
przestrzeń nazw XML
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv1"
kontrolka TextView ma
android:layout_width="fill_parent"
identyfikator tv1 poprzez który
android:layout_height="wrap_content"
odwołujemy się do niej w kodzie
android:text="@string/hello"
szerokość i wysokość elementu
/>
na ekranie:
napis umieszczony w etykiecie tekstowej TextView
fill_parent  wypełnia ekran
 identyfikator napisu to hello,
wrap_content  dostosowana
do zawartości elementu
 zawartość napisu jest zdefiniowana w pliku strings.xml
Utworzenie instancji widoku z opisu widoku (typowo w onCreate())
setContentView(R.layout.id_pliku_zasobów)
Odwołanie do widoku:
view findViewById(R.id.id_widoku)
© maf 26
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Klasa główna  kod zródłowy Jeden.java
metoda deklaratywna  zalecana
package org.mojpakiet;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Jeden extends Activity
{
@Override
aktywność początkowa
public void onCreate(Bundle savedInstanceState)
(najwyższego poziomu)
{
metoda wywoływana automatycznie
super.onCreate(savedInstanceState);
gdy aktywność rozpoczyna działanie
setContentView(R.layout.main);
wczytanie zasobów i
wyświetlenie układu  zasoby
TextView tv = (TextView) findViewById(R.id.tv1);
zdefiniowane w main.xml
}
identyfikator widoku tv
}
odwołanie się do kontrolki zdefiniowanej w XML (metoda findViewById)
© maf 27
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Główny plik zasobów  main.xml
Układ interfejsu zdefiniowany w main.xml jest realizowany w
oknie głównej aktywności (tu: Jeden)
Węzeł LinearLayout opisuje liniowy układ interfejsu
użytkownika

standardowy nagłówek XML
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
układ wypełnia ekran
android:layout_height= match_parent"
android:orientation="vertical"
!
elementy interfejsu sÄ…
>
rozkładane w poziomie
android:id="@+id/tv1" węzły definiują zawartość
i opisują układ dla
android:layout_width="fill_parent"
elementów wewnątrz
android:layout_height="wrap_content"
android:text="@string/hello"
/>

© maf 28
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Składnia odnośników do zasobów
Odnośnik do zasobu wiąże zasób zdefiniowany w pliku XML z jego
identyfikatorem
Schemat:
Android:id= @[pakiet:][+]typ/identyfikator
" Np.: @+string/napis
@string/napis
" symbol @ oznacza że parser ma rozwiązywać resztę łańcucha znaków
" pakiet nazwa pakietu (brak oznacza pakiet lokalny)
" + opcjonalny, oznacza, że identyfikator zostanie utworzony
jeżeli jeszcze nie istnieje (jest to nowy zasób)
" typ rodzaj zasobu, określany przez przestrzeń nazw
R.string, R.layout, R.id, R.drawable lub R.attr
 klasy wewnętrzne R
" identyfikator identyfikator zasobu (nazwa)
 identyfikator jest stałą typu int w pliku R.java
© maf 29
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Plik zasobów strings.xml
Plik zasobów, który przechowuje napisy w węzłach
Atrybut name to identyfikator napisu

napis o identyfikatorze hello
możliwe formatowanie (Java i HTML)

Witaj! Tu Jeden.
Prog1

napis o identyfikatorze app_name
Odnośniki do napisów w Java
String s1 = aktywnosc.getString(R.string.hello);
referencja do obiektu aktywności
Odnośniki do napisów w plikach XML

np. TextView
© maf 30
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Kasa R  plik R.java
Klasa R zawiera identyfikatory zasobów aplikacji z katalogu /res
Generowana automatycznie przez kompilator
Dla każdego rodzaju zasobów tworzona jest klasa wewnętrzna:
drawable, layout, string itd.
Identyfikatory zasobów są stałymi
package org.przyklad.prog1;
typu int. Odnoszą się do zasobów
public final class R {
aplikacji, elementów zdefiniowanych
public static final class attr w plikach XML, lub do plików.
{ }
public static final class drawable {
zasoby graficzne, tu: ikona
ic_launcher.png
public static final int ic_launcher = 0x7f020000;
}
public static final class layout {
public static final int main = 0x7f030000;
}
identyfikator pliku main.xml
public static final class string {
public static final int app_name = 0x7f040001;
public static final int hello = 0x7f040000;
} }
identyfikatory zasobów z pliku strings.xml
© maf 31
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Inne aktywności
Analogiczna struktura
" Rodzaje zasobów
string  napisy  w pliku /res/values/nazwa_pliku.xml
layout  układy graficzne (wyglądy ekranów)
" W plikach /res/layout/nazwa_pliku.xml
" Oddzielny plik dla każdego ekranu
color  kolory
" Identyfikatory kolorów są dostępne w przestrzeni nazw R.color.*
" Domyślny zestaw kolorów jest zdefiniowany w przestrzeni android.R.color
dimension  wymiary stosowane do rozmieszczania elementów i
tworzenia styli (w: px, in, mm, pt, dp, dpi, sp)
image  obrazki
color-drawable  rysowalne, kolorowe obiekty
WÅ‚asne pliki XML  w katalogu /res/xml
WÅ‚asne pliki nieskompresowane  w katalogu /res/raw (np. pliki wideo)
Pliki dodatkowe nie sÄ… traktowane jak zasoby  w katalogu /assets
© maf 32
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika
Budowa aplikacji
" Aplikacja na emulatorze
Klawisze
nazwa aplikacji
funkcyjne
napis etykiety
TextView
ekran
emulowanego klawiatura
urzÄ…dzenia numeryczna
(w starszych
wersjach
emulatora)
© maf 33
Å›
Fra
awska
Å‚
Informatyki
Mariusz
Wroc
Instytut
Politechnika


Wyszukiwarka