Upload
cviga
View
258
Download
6
Embed Size (px)
DESCRIPTION
seminarski rad
Citation preview
PANEVROPSKI UNIVERZITET APEIRON
FAKULTET INFORMACIONIH TEHNOLOGIJA
Vanredne studije
PredmetPrincipi programiranja
Smijer „Poslovna informatika”
Razvoj Android aplikacija sa Java programskim jezikom
(Seminarski rad)
Predmetni nastavnik
Prof. dr Zoran Ž. Avramović, dipl.inž.elek.
Banja Luka Januar 2013.
PANEVROPSKI UNIVERZITET APEIRON
FAKULTET INFORMACIONIH TEHNOLOGIJA
TEMA: „Razvoj Android aplikacija sa Java programskim jezikom“
SEMINARSKI RAD
student: Igor Irić
broj indeksa: 80-11/VPI
studijski program: Poslovna informatika
predmet: Principi programiranjea
mentor: prof. dr. Zoran Avramović
Banja Luka, Januar 2013
3
SadržajUvod................................................................................................................................................5
Istorija Android operativnog Sistema..............................................................................................5
Android operativni sistem................................................................................................................5
Arhitektura operativnog sistema Android.......................................................................................6
Kernel..........................................................................................................................................6
Biblioteke.....................................................................................................................................7
Aplication framework sloj...........................................................................................................7
Aplikacioni sloj............................................................................................................................7
Osnovne komponente Android korisničkog interfejsa....................................................................7
Activity (Aktivnosti)....................................................................................................................7
Fragments (Fragmenti)................................................................................................................7
Views(pogledi) i ViewGroups(pogledgrupa)..............................................................................8
LinearLayout................................................................................................................................8
AbsoluteLayout............................................................................................................................9
TableLayout...............................................................................................................................10
RelativeLayout...........................................................................................................................12
FrameLayout..............................................................................................................................13
ScrollView.................................................................................................................................14
Activities (Aktivnosti), Fragments (fragmetni) I Views (pogledi)............................................16
Anroid razvojni alati......................................................................................................................16
Android SDK.............................................................................................................................16
Anroid razvojni alati..................................................................................................................17
Instaliranje ADT-a (Android Development Tools).......................................................................17
Podešavanje ADT-a...................................................................................................................17
Android SDK i AVD Manager..................................................................................................18
4
Prečice u emulatoru...................................................................................................................18
Arhitektura Android aplikacija......................................................................................................18
AndroidManifest.xml.................................................................................................................18
Aktivnosti i Lifecycle(Životni Ciklus)......................................................................................19
Context (Kontekst).....................................................................................................................20
Resursi...........................................................................................................................................20
Definisanje Id-eva......................................................................................................................20
Kreiranje novog projekta (Android aplikacije)..............................................................................21
Orjentacije na ekranu.....................................................................................................................23
Kreiranje aplikacije konvertor temperature...................................................................................24
Dodaj poglede............................................................................................................................25
Uredi Views(Poglede)...............................................................................................................26
Litereatura......................................................................................................................................30
5
Uvod
Istorija Android operativnog Sistema
Android operativni sistem je izrastao iz malog razvojnog projekta u jedan od najčešće korištenih mobilnih operativnih sistema koji ljudi koriste na dnevnoj bazi. On je imao mnoge faze u rastu i razvoju koji je doveo tehnologiju koja pokreće mnoge pametne telefone i tablet računare danas. Različite verzije su puštane i usavršavane od originalnog izdanja u 2008. Istorija iza Android operativni sistema je vrlo
zanimljiva.
Osnovali su ga Andy Rubin i Rich Minor, u Palo Altu se udružuju sa Chrisom White i Nick Spears koji su radili zajedno na razvoju softvera i prateće tehnologije za proizvodnju visoko efikasnog Android operativnog sistema. Iako je bilo mnogo različitih verzija ove tehnologije, važno je shvatiti da je svaka verzija operativnog sistema pomogla da se razvije efikasniji operativni sistem koji je najbolji za kupca u tom vremenu.
Android je Linux-based operativni sistem dizajniran prvenstveno za touchscreen mobilne uređaje kao što su smartphone i tablet računari. U početku razvijen od strane Android Inc, (osnovan 2003 i sa sjedištem u Palo Altu, Kalifornija), koja je djelovala kao filijala Googlea i kasnije kupljen od Google-a u 2005. Android je bio najavljen u 2007 i prvi telefon je prodat oktobra 2008.
Android operativni sistemAndroid OS je besplatan za korištenje, nadogradnju, i dizajniran sa više hardverskih implementacija, to je open source i kod je objavljen pod Apache licencom. To je softver koj ne obuhvata samo operativni sistem, nego i middleware i ključne aplikacije. To je jedan od najkorištenijih Operativnih Sistema. Android ima veliku zajednicu za razvoj vlastitih aplikacija, pisanih prvenstveno na prilagođenom Java programskom jeziku. Svako sa osnovnim znanjem u Javi može početi razvijati Android aplikacije. Android OS verzije variraju od 1,0-4,2 Jellybean (Juli 2012).
Verzija Androida Datum izdavanja Ime
1.1 9 Februar 2009
1.5 30 April 2009 Cupcake
1.6 15 Septembar 2009 Donut
6
2.0/2.1 26 Octobar 2009 Eclair
2.2 20 May 2010 Froyo
2.3 6 Decembar 2010 Gingerbread
3.0/3.1/3.2 22 Februar 2011 Honeycomb
4.0 19 Octobar 2011 Ice Cream Sandwich
4.1 27 Juni 2012 Jelly Bean
4.2 29 Octobar 2012 Jelly Bean
Kernel u Android OS je Linux, on koristi Linux kernel 2,6 i 3.x (Android 4,0 pa nadalje), tako da je Android zasnovan na Linux operativnom sistemu.
Android pruža mnogo grafike, skladištenje podataka i multimedijske mogućnosti. Android runtime sadrži Dalvik virtuelnu mašinu (DVM), koja pokreće aplikacije.
DVM je virtuelna mašina koja se može uporediti sa Java Virtual Machine (JVM). Kako je Google odabrao Java kao jezik za razvoj Android aplikacija, tako je odabrao da napusti i JME i JVM u korist alternativnog implementacionog cilja, Dalvik virtualne mašine.
DVM radi na bytecodes koji su transformisani iz Java drugom formatu klase. Dex format koristi DX alat koji je uključen u Android SDK (Software Development Kit). Primarni cilj DVM je stvaranje platforme neutralnih Dex datoteka. Procesi DVM obično su optimizivani za niske memorijske zahtjeve potrebne za razvoj i implementaciju aplikacija za platforme mobilnih telefona. On je osmišljen kako bi se omogućilo više VM instance da se pokrenu odjednom.
Arhitektura operativnog sistema AndroidAndroid os se sastoji od četiri glavna nivoa slojeva Kernel, biblioteke, aplikacioni framework i aplikacije.
Kernel
Cijeli Android OS je izgrađen na vrhu Linux 2,6 Kernela sa nekim daljnjim arhitekturlnim promjena od strane Google-a. To je Linux koji sarađuje sa hardverom i sadrži sve bitne hardverske upravljačke programe. Linux pruža takve stvari kao što su virtuelne memorije, umrežavanje, upravljački programi i upravljanje napajanjem.
7
Biblioteke
Sloj biblioteke pruža Androidu mogućnosti za svoje osnovne funkcije. Android je isporučen sa SGL koji djeluje kao primarni 2D grafički render. Njegov saradnik je openGL ES koji pruža 3D grfičku podršku. Android dolazi u paketu sa SQLite koji se najviše brine o skladištenju podataka. WebKit engine za web renderovanje se takođe isporučuje sa Androidom I služi za prikazivanje web stranica na ekranima manje rezolucije.
DVM je takođe dio ovog sloja. DVM je bytecode prevodilac koji je veoma optimizovan za izvršavanje na mobilnim platformama. Bytecodovi su konvertovani Java binaries koji su veoma brzi i efikasni za rad na manjim procesorima. Jezgro biblioteke je napisano u Javi i pruža mnogo ključnih odjeljenja koja bi inače bila dostupna u Java virtuelnoj mašini.
Aplication framework sloj
Pruža sve glavne API-je koje će koristiti aplikacije, uključujući stvari poput djeljenja podataka, pristup sistemu telefonije i primanja notifikacija. Ovaj sloj kao i sloj iznad njega su napisani potpuno u Javi.
Aplikacioni sloj
Ovo je gorni sloj u arhitekturi androida. Ovaj sloj sadrži programe koji je napisao tim Androida kao i bilo koje druge aplikacije instalirane na uređaj. Iako najviše dominiraju aplikacije kao što su telefon i kontakti. Svaki drugi programer može da pristupi ovom sloju.
Android pruža usluge koje se očekuju u modernim operativnim sistemima kao što su virtuelne memorije, multiprograming. Mnoge usluge androida su reziltat Linux kernela.
Osnovne komponente Android korisničkog interfejsa
Activity (Aktivnosti)
Aktivnost predstavlja vizuelni prikaz Android aplikacije. Aktivnosti koristite Preglede i fragmente da stvore korisnički interfejs i interakciju s korisnikom.
Android aplikacija može imati nekoliko Aktivnosti
Fragments (Fragmenti)
Fragmenti su dijelovi koji se pokreću u kontekstu aktivnosti. Fragmenti komponente obuhvataju aplikacioni kod, tako da je lakše da ga ponovno koristite i podržite različite veličine uređaja.
8
Fragmenti su opcionalni, možete koristiti Viws (pregledi) i ViewGroups (pregledi grupa) direktno u Activity(aktivnostima), ali u profesionalnim aplikacijama uvijek ih koristiti kako bi se omogućilo daljnje korištenje vaših komponenti korisničkog interfejsa na uređajima različitih veličina.
Views(pogledi) i ViewGroups(pogledgrupa)
Pogledi su dodaci korisničkog interfejsa, npr. dugmići ili tekstualna polja. Baza klasa za sve poglede je android.view.View klasa. Pogledi imaju atribute koji se mogu koristiti za konfigurisanje njihovih izgleda i ponašanja.
ViewGroup je odgovoran za organizovanje drugih pogleda. ViewGroups je takođe nazvan izgleda menadžer. Baza klasa za ove izgleda menadžere je android.view.ViewGroup klasa, koja se prostire na View klasu.
ViewGroups može biti ugnježdena da stvori kompleksan izgled. Ne bi trebali ugnjezditi ViewGroups preduboko jer to ima negativan utjicaj na performanse.
Primjeri ViewGroups uključuju LinearLayout i FrameLayout.ViewGroup proizlazi iz baza klase android.view.ViewGroup.
Android podržava sljedeće ViewGroups:
➤ LinearLayout
➤ AbsoluteLayout
➤ TableLayout
➤ RelativeLayout
➤ FrameLayout
➤ ScrollView
LinearLayout
LinearLayout organizuje stavove u jednoj koloni ili jednom redu. Child vievs može se organizovati vertikalno ili horizontalno. Da biste vidjeli kako LinearLayout radi, rezmotrićemo sljedeće elemente obično sadržane u main.xml fajlu:
<?xml version=”1.0” encoding=”utf-8”?><LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”android:layout_height=”fill_parent”
9
android:orientation=”vertical” ><TextView
android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”@string/hello” />
</LinearLayout>
U main.xml datoteci, zapažamo da je glavi element <LinearLayout> i ima <TextView>element sadržan u njemu. <LinearLayout> Element kontroliše redoslijed u kojim se viewssadržan u njemu pojavljuje.
AbsoluteLayout
AbsoluteLayout vam omogućava da odredite tačnu lokaciju svoje djece (nasljednika). Razmotrićemo sledeći UI definisan u main.xml:
<AbsoluteLayoutandroid:layout_width=”fill_parent”android:layout_height=”fill_parent”xmlns:android=”http://schemas.android.com/apk/res/android” >
<Buttonandroid:layout_width=”188dp”android:layout_height=”wrap_content”android:text=”Button”android:layout_x=”126px”android:layout_y=”361px” />
<Buttonandroid:layout_width=”113dp”android:layout_height=”wrap_content”android:text=”Button”android:layout_x=”12px”android:layout_y=”361px” />
</AbsoluteLayout>
Slika 1 prikazuje dva dugmeta (testiran na 180 dpi AVD) koja se nalaze na njihovom zadanom položaju i koriste android_layout_x i android_layout_y atribute.
Međutim, postoji problem s AbsoluteLayout kada se aktivnost pregleda na ekranu velike rezolucije (vidi sliku 2). Iz tog razloga, AbsoluteLayout je zastario još od Androida 1.5 (iako je to još uvijek podržano u trenutnoj verziji). Trebali biste izbjegavati korištenje AbsoluteLayout u UI, jer ne garantuje da će biti podržan u budućim verzijama Android-a.
Umjesto toga treba koristiti druge izglede.
10
Primjer 1 primjer 2
TableLayout
TableLayout grupiše pogled u redove i kolone. Možete koristiti <TableRow> element da odredi red u tabeli. Svaki red može sadržavati jedan ili više pogleda. Svaki pogled koji stavite unutar reda formira ćeliju. Širina svake kolone određuje najveću širinu svake ćelije u toj koloni.
<TableLayoutxmlns:android=”http://schemas.android.com/apk/res/android”android:layout_height=”fill_parent”android:layout_width=”fill_parent” ><TableRow><TextViewandroid:text=”User Name:”android:width =”120dp”/><EditTextandroid:id=”@+id/txtUserName”android:width=”200dp” /></TableRow><TableRow><TextViewandroid:text=”Password:”/><EditTextandroid:id=”@+id/txtPassword”
11
android:password=”true”/></TableRow><TableRow><TextView /><CheckBox android:id=”@+id/chkRememberPassword”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”Remember Password”/></TableRow><TableRow><Buttonandroid:id=”@+id/buttonSignIn”android:text=”Log In” /></TableRow></TableLayout>
Slika 3 pokazuje kakav je prethodi izgled kad dođe na Android emulator.
Slika 3 slika 4
Imajte na umu da se u prethodnom primjeru, postoje dvije kolone i četiri reda u TableLayout. Ćelija neposredno ispod Password TextView je prikazana sa <TextView/> praznim elementom. Ako to ne uradite, Zapamtite ček boks će se pojaviti pod Password TextView, kao što je prikazano na slici 4.
12
RelativeLayout
RelativeLayout vam omogućava da odredite kako će dijeca (nasljednici) pogledi biti pozicionirani u odnosu na svaki drugi.
<?xml version=”1.0” encoding=”utf-8”?><RelativeLayoutandroid:id=”@+id/RLayout”android:layout_width=”fill_parent”android:layout_height=”fill_parent”xmlns:android=”http://schemas.android.com/apk/res/android” ><TextViewandroid:id=”@+id/lblComments”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”Comments”android:layout_alignParentTop=”true”android:layout_alignParentLeft=”true” /><EditTextandroid:id=”@+id/txtComments”android:layout_width=”fill_parent”android:layout_height=”170px”android:textSize=”18sp”android:layout_alignLeft=”@+id/lblComments”android:layout_below=”@+id/lblComments”android:layout_centerHorizontal=”true” /><Buttonandroid:id=”@+id/btnSave”android:layout_width=”125px”android:layout_height=”wrap_content”android:text=”Save”android:layout_below=”@+id/txtComments”android:layout_alignRight=”@+id/txtComments” /><Buttonandroid:id=”@+id/btnCancel”android:layout_width=”124px”android:layout_height=”wrap_content”android:text=”Cancel”android:layout_below=”@+id/txtComments”android:layout_alignLeft=”@+id/txtComments” /></RelativeLayout>
Primijeti ćete da svaki pogled ugrađen unutar RelativeLayout ima atribute koji omogućavaju da se uskladi sa drugim pogledom. Ovi atributi su:
➤ layout_alignParentTop
➤ layout_alignParentLeft
➤ layout_alignLeft
➤ layout_alignRight
13
➤ layout_below
➤ layout_centerHorizontal
Slika 5
Vrijednost za svaki od tih atributa je ID za prikaz tog za kojeg se postavi referenca. Prethodni XML interfejs stvara ekran kao što je prikazano na slici 5.
FrameLayout
FrameLayout je čuvar mjesta na ekranu koji možete koristiti da prikažete jedan pogled.
<?xml version=”1.0” encoding=”utf-8”?><RelativeLayoutandroid:id=”@+id/RLayout”android:layout_width=”fill_parent”android:layout_height=”fill_parent”xmlns:android=”http://schemas.android.com/apk/res/android” ><TextViewandroid:id=”@+id/lblComments”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:text=”Hello, Android!”android:layout_alignParentTop=”true”android:layout_alignParentLeft=”true” /><FrameLayoutandroid:layout_width=”wrap_content”android:layout_height=”wrap_content”android:layout_alignLeft=”@+id/lblComments”android:layout_below=”@+id/lblComments”android:layout_centerHorizontal=”true” ><ImageView
14
android:src = “@drawable/droid”android:layout_width=”wrap_content”android:layout_height=”wrap_content” /></FrameLayout></RelativeLayout>
Ovdje imate FrameLayout unutar RelativeLayout. Unutar FrameLayout, možete ugraditi ImageView.UI i prikazan je na slici 6.
Slika 6
ScrollView
ScrollView je posebna vrsta FrameLayout po tome što korisnicima omogućava de se kreću kroz listu prikaza koji zauzimaju više prostora od fizičkog ekrana. ScrollView može da sadrži samo jedno dijete(nasljednik) Pogled ili ViewGroup, što je normalan LinearLayout.
Sljedeći main.xml sadržaj pokazuje ScrollView i sadrži LinearLayout, koji sadrži neke dugmiće i EditText pogled:
<ScrollViewandroid:layout_width=”fill_parent”android:layout_height=”fill_parent”xmlns:android=”http://schemas.android.com/apk/res/android” ><LinearLayoutandroid:layout_width=”fill_parent”android:layout_height=”wrap_content”android:orientation=”vertical” ><Button
15
android:id=”@+id/button1”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”Button 1” /><Buttonandroid:id=”@+id/button2”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”Button 2” /><Buttonandroid:id=”@+id/button3”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”Button 3” /><EditTextandroid:id=”@+id/txt”android:layout_width=”fill_parent”android:layout_height=”600dp” /><Buttonandroid:id=”@+id/button4”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”Button 4” /><Buttonandroid:id=”@+id/button5”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:text=”Button 5” /></LinearLayout></ScrollView>
Ako učitate prethodni kod na Android emulatoru, vidjećete nešto kao na slici 8. Zato što EditText automatski dobija fokus, on napuni cijelu aktivnosti (kao da je visina postavljena na 600dp). Da bi se spriječilo dobijanje fokusa, dodajte sljedeća dva attributa <LinearLayout> Elementa:
<LinearLayoutandroid:layout_width=”fill_parent”
16
android:layout_height=”wrap_content”android:orientation=”vertical”android:focusable=”true”android:focusableInTouchMode=”true” >
Sada ćete biti u mogućnosti da vidite dugmiće i prelistate listu pregleda (9).
Slika 9
Activities (Aktivnosti), Fragments (fragmetni) I Views (pogledi)
Aktivnosti su definisane s različitim rasporedima. Ovi izgledi mogu se izabrati na temelju nekoliko različitih faktora uključujući veličini samog uređaja.
Anroid razvojni alati
Android SDK
Android Software Development Kit (SDK) sadrži potrebne alate za kreiranje, kompajliranje i pakovanje Android aplikaciju. Većina tih alata su zasnovani na komandnoj liniji.
Android SDK takođe obezbjeđuje Android emulator, tako da Android aplikacije mogu biti testirane bez pravog Android telefona. Možete stvoriti virtuelni Android uređaj (AVD) preko Android SDK, koji radi u tom emulatoru.
Android SDK sadrži Android debug Bridge (ADB) alat koji omogućava povezivanje sa virtuelnim ili stvarnim Android uređajem.
17
Anroid razvojni alati
Google nudi Android razvojni alati (ADT) za razvoj Android aplikacija sa Eclipse-om. ADT je skup komponenti (plug-ins) koje proširuju Eclipse IDE sa Android razvojnim mogućnostima.
ADT sadrži sve potrebne funkcije za stvaranje, kompajliranje, ispravljanje i implementaciju Android aplikacija iz Eclipse IDE. ADT također omogućuje stvaranje i pokretanje AVDs.
Android Razvojni alati (ADT) pružaju specijalizovane editore resursa fajlova, npr. izgleda fajlova. Ove urednici dopuštaju prebacivanje između XML datoteke i bogatijeg korisničkog interfejsa putem kartica na dnu urednika.
Instaliranje ADT-a (Android Development Tools)ADT je dodatak za Eclipse koji omogućava lakšu izradu Android aplikacija. Za instalaciju ovog dodatka pratite sledeće korake:
U Eclipse izaberite: Help/Install New Software
Idite na Add U polju Name upišite,
recimo ADT dodatak, a u polju Location stavite sledeći link: https://dl-ssl.google.com/android/eclipse/
Nakon toga selektujte Developer Tools i instalirajte ga.
Restartujte Eclipse
Podešavanje ADT-a
Da bi konfigurisali ADT dodatak, potrebno je uraditi sledeće:
U Eclipse izaberite Window/Preferences U lijevom dijelu prozora izaberite Android U polju SDK Location unesite putanju gdje se nalazi Android SDK Na samom kraju pritisnite Apply, a zatim i OK.
18
Android SDK i AVD Manager
Na kraju potrebno je instalirati određene komponente koje omnogućavaju korišćenje emulatora. Kreiranje emulatora (AVD – Android Virtual Device) se radi kroz sledeće korake:
U Eclipse selektujte Windows/Android SDK and AVD Menager
U tabu sa leve strane izaberite Virtual Device i u desnom dijelu selektujte New.
U polju Name unesite neko ime, recimo moj android, a iz padajućeg menija polja Target izaberite verziju Androida za koju razvijate aplikaciju (preporuka 2.3.3 ili viša) i nakon toga kliknite Create AVD.
Prečice u emulatoru
Sljedeće prečice su korisne za rad s emulatorom.
Alt + Enter Najveći emulator. odlično za demonstraciju.
Ctrl + F11 promjene orijentacije emulatora.
F8 Uključuje ili isključuje mrežu.
Arhitektura Android aplikacija
AndroidManifest.xml
Komponente i podešavanja za Android aplikacije su opisani u AndroidManifest.xml datoteci. Na primjer sve aktivnosti i usluge moraju biti deklarisane u ovoj datoteci.
Ona takođe mora da sadrži sve potrebne dozvole za primjenu. Na primjer, ako program zahtijeva pristup mreži mora biti navedeno ovdje.
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.igoriric.konvertor" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Konvertor" android:label="@string/app_name"> <intent-filter>
19
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
</application> <uses-sdk android:minSdkVersion="9" />
</manifest>
Paket atribut definiše osnovni paket za Java objekte navedene u ovoj datoteci. Ako se Java objekt nalazi u drugačijem pakovanju, on mora biti prijavljen sa punim kvalifikovanim imenom paketa.
Google Play zahtijeva da svaka Android aplikacija koristi svoj jedinstveni paket. Zato je dobar običaj koristiti obrnuti naziv domena kao ime paketa. Time će se izbjeći sudara s drugim Android aplikacijama.
android:versionName i android:versionCode navode verziju aplikacije. Naziv verzije je ono što korisnik vidi i može biti bilo koji string.
versionCode mora biti cijeli broj. Android Market određuje na temelju versionCode, ako treba obaviti ažuriranje aplikacija za postojeću aplikaciju. Obično počinju sa "1" i povećva se vrijednost za po jedan.
<activity> Oznaka definiše aktivnost, u ovom primjeru koji ukazuje na konvertovanje klase u com.igoriric.konvertor paketu. Intent filter je registrovan za tu klasu koja određuje da je ova aktivnost započela onda kada se pokreće aplikacija (action android:name="android.intent.action.MAIN"). Kategorija definition category android:name="android.intent.category.LAUNCHER" definiše da je ova aplikacija dodana direktorijum aplikacije na Android uređaju.
@ string/ APP_NAME vrijednost se odnosi na resurse fajlova koje sadrže stvarnu vrijednost imena aplikacije. Korištenje resursa datoteke olakšava da se obezbjede različiti resursi, npr. stringovi, boje, ikone, za različite uređaje i čini ih lakim za prevođenje aplikacije.
Korištenje SDK dijela AndroidManifest.xml datoteke definiše minimalnu verziju SDK za koje vaša aplikacija važi. Ovo spriječava vašu aplikaciju da bude instalirana na nepodržane uređaje.
Aktivnosti i Lifecycle(Životni Ciklus)
Android sistem kontroliše životni ciklus vaše aplikacije. U bilo kojem trenutku Android sistem može zaustaviti ili uništiti vašu aplikaciju, npr. zbog dolaznog poziva. Android sistem definiše životni ciklus za aktivnosti preko predefinisanih metoda. Najvažnije metode su:
onSaveInstanceState()- poziva se nakon što je Aktivnost zaustavljena. Koristi se za čuvanje podataka, tako da se aktivnost može vratiti u svoje stanje, ako se ponovo pokrene.
20
onPause()- uvijek se poziva ako se aktivnost završi, može se koristiti za oslobađanje resursa ili čuvanje podataka.
onResume()- poziva se ako se Aktivnost ponovo pokrene, može se koristiti za inicijalizaciju polja.
Context (Kontekst)
Klasa android.content.Context obezbjeđuj vezu sa Android sistemom i resursima projekta. To je interfejs za globalne informacije o okruženju aplikacije.
Kontekst takođe pruža pristup Android Servisima, npr. usluga lokacija.
ResursiAndroid podržava da se resursi, kao što su slike i određenih XML konfiguracioni fajlovi, mogu se držati odvojeno od izvornog koda.
Ovi resursi moraju biti definisani u res direktorijmu u posebnom folderu zavisno od njihove namjene. Takođe možete dodati dodatne kvalifikacije za naziv foldera da ukazuju na to da se povezana sredstva trebaju koristiti za posebne konfiguracije, npr. možete odrediti da resurs vrijedi samo za određenu veličinu ekrana.
Gen direktorijum u Android projektu sadrži generisane vrijednosti. R.java je generisana klasa koja sadrži reference na određene resurse u projektu.
Ako kreirate novi resurs, odgovarajuća referensa se automatski kreira u R.java putem Eclipse ADT alata. Ove reference su statične cjelobrojne vrijednosti i definišu ID-eve za resurse.
Android sistem pruža metode za pristup odgovarajućim resursima preko ovih ID-eva.
Na primjer za pristup Stringu s R.string.yourString ID, trebali bi ste koristiti (getString (R.string.yourString)) metodu.
R.java se automatski kreira u Eclipse razvojnom okruženju, ručne promjene nisu potrebne i biće zanemarene od strane alata.
Definisanje ID-eva
Android omogućava da definišete ID komponente korisničkog interfejsa dinamični u izgledu datoteka, preko @ + id / your_id notacija.
Da bi ste kontrolisali svoj ID-eve možete takođe kreirati fajl nazvan ids.xml u vašem /res/values folderu i definisati sve ID-eve u tom fajlu.
21
<?xml version="1.0" encoding="utf-8"?><resources>
<item name="button1" type="id"/>
</resources>
Ovo vam omogućava da koristite ID-eve direktno u izgledu vašeg fajla.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" >
<Button android:id="@id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_marginRight="27dp" android:text="Button" />
</RelativeLayout>
Kreiranje novog projekta (Android aplikacije)Za kreiranje novog projekta potrebno je da uradite sledeđe:
Selektujte File/New/Project Iz liste u prozoru izaberite Android/Android Project i idite na Next U polja otvorenog prozora unesite sledeće:
Project name: HelloWorld Target name: Android 2.3.3 Application name: HelloWorld Package name: com.helloworld Create Activity: BlankActivity
Na kraju kliknite Finish
Nakon svega ovoga otvorite vaš MainActivity.java file u kojem se nalazi kod koji poziva vaš XML fajl activity_main.xml u kojem se nalazi text Hello World.
package com.example.helloworld;
import android.os.Bundle;import android.app.Activity;import android.view.Menu;
public class MainActivity extends Activity {
22
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;
}
}
Da bi ste promijenili vaš tekst iz Hello World u neki drugi otvorite vaš activity_main.xml i u vizuelnom editoru desnim klikom kliknite na tekst i vidjećete da je povezan sa stringom hello_world koji je definisan u strings.xml fajlu.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" >
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" />
</RelativeLayout>
Otvorite vaš string.xml fajl I promijenite teks hello_world stringa u vaš tekst koji želite da se pojavi na vašem ekranu.
<?xml version="1.0" encoding="utf-8"?><resources>
<string name="app_name">HelloWorld</string> <string name="hello_world">Pozdrav svima ovo je moja prva aplikacija!</string> <string name="menu_settings">Settings</string>
</resources>
Pokrenemo aplikaciju u našem virtuelnom androidu koji smo prethodno napravili i dobijeme sledeće na našem ekranu:
23
Orjentacije na ekranuKoristeći Eclipse, napravićemo novi Android projekt i to nazvan orijentacija.
Dodajmo sljedeće u main.xml fajl:
<?xml version=”1.0” encoding=”utf-8”?><LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”android:layout_width=”fill_parent”android:layout_height=”fill_parent”android:orientation=”vertical” ><EditTextandroid:id=”@+id/txtField1”android:layout_width=”fill_parent”android:layout_height=”wrap_content” /><EditTextandroid:layout_width=”fill_parent”android:layout_height=”wrap_content” />
Dodamo sledeće u OrjentacijaActivity.java
package com.igoriric.Orjentacije;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class Orjentacije Activity extends Activity {/** Poziva se kada je aktivnost prvi put kreirana. */@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Log.d(“StateInfo”, “onCreate”);}@Overridepublic void onStart() {Log.d(“StateInfo”, “onStart”);super.onStart();}@Overridepublic void onResume() {Log.d(“StateInfo”, “onResume”);super.onResume();}@Overridepublic void onPause() {Log.d(“StateInfo”, “onPause”);super.onPause();}@Overridepublic void onStop() {Log.d(“StateInfo”, “onStop”);super.onStop();}@Overridepublic void onDestroy() {Log.d(“StateInfo”, “onDestroy”);super.onDestroy();}@Overridepublic void onRestart() {Log.d(“StateInfo”, “onRestart”);super.onRestart();
24
}
Slika 8 Slika 9
Promijenimo orijentaciju Android emulator pritiskom na Ctrl + F11. Slika 9 prikazuje emulator u pejzažnom načinu rada.
Kreiranje aplikacije konvertor temperatureIzaberemo File → New → Other → Android → Android Application Project da kreiramo novi android projekat.
Nakon što napravimo novi projekat sa imenom konvertor temperature dobijemo izgled kao ovaj.
Kreiramo atribute – stringove
25
celsius U Celsius
fahrenheit U Fahrenheit
calc Konvertuj
U fajlu strings.xml bi trebali dobiti ove stringove:
<?xml version="1.0" encoding="utf-8"?><resources>
<string name="app_name">Konvertor Temperature</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string> <color name="MojaBoja">#f5f5f5</color> <string name="celsius">u Celsius</string> <string name="fahrenheit">u Fahrenheit</string> <string name="calc">Konvertuj</string>
</resources>
Dodaj poglede
Odaberemo res / layout / activity_main.xml datoteku i otvorimo Android editor putem Dvoklika. Ovaj urednik omogućava da se kreira izgled putem drag and drop ili putem XML izvornog koda. Može se prebacivati između oba prikaza putem kartica na dnu editora. Za promjenu položaja i grupisanje elemenata može se koristiti Prikaz Outline Eclipse.
Sada ćemo kreirati izgled za našu Android aplikaciju.
26
Desnim tasterom miša izabere se Hello World! Tekst objekt. Odaberemo i uklonimo tekst objekat.
Nakon toga izaberemo sekciju Text Fields i pronađemo Običan tekst (preko tooltip).
Svi unosi u sekciji Text Fields definišu tekstualna polja. Različiti unosi definišu dodatne atribute za njih, npr. ako polje tekst treba da sadrži samo brojeve.
Povučemo ovo polje za unos teksta na dio za kreiranje.
Nakon toga prevucčemo dva Radio Buttons (Radio dugmeta) i jedno obično dugme.
Trebali bi smo da dobijemo ovakav izgled.
Uredi Views(Poglede)
Da bi smo dodjelili dugmićima njihova svojstva kliknemo desnim klikom miša na jedan od njih, kliknemo edit text da bi smo im dodali svojsta koja smo prethodno napravili.
27
Kada svakom od njih dodamo njihova svojstva xml kod bi trebao da izgeda ovako:
Activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/MojaBoja" >
<EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:ems="10" android:inputType="numberSigned|numberDecimal" >
<requestFocus /> </EditText>
<RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/editText1" >
<RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/celsius" />
28
<RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/fahrenheit" /> </RadioGroup>
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/radioGroup1" android:onClick="onClick" android:text="@string/calc" />
</RelativeLayout>
Dodamo kod u Activity fajlu za izračunavanje celziusa i fahrenheite-a i kod bi trebao da izgleda ovako.
MainActivity.java
package com.example.konvertortemperature;
import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.RadioButton;import android.widget.Toast;
public class MainActivity extends Activity { private EditText text;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (EditText) findViewById(R.id.editText1);
}
// Ova metda se poziva na klik dugmica jer smo je dodjelili // "OnClick property" dugmica public void onClick(View view) { switch (view.getId()) { case R.id.button1: RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0); RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1); if (text.getText().length() == 0) { Toast.makeText(this, "Molimo vas unesite korektan broj", Toast.LENGTH_LONG).show(); return; }
29
float inputValue = Float.parseFloat(text.getText().toString()); if (celsiusButton.isChecked()) { text.setText(String .valueOf(convertFahrenheitToCelsius(inputValue))); celsiusButton.setChecked(false); fahrenheitButton.setChecked(true); } else { text.setText(String .valueOf(convertCelsiusToFahrenheit(inputValue))); fahrenheitButton.setChecked(false); celsiusButton.setChecked(true); } break; } }
// Konvertuje u celsius private float convertFahrenheitToCelsius(float fahrenheit) { return ((fahrenheit - 32) * 5 / 9); }
// Konvertuje u fahrenheit private float convertCelsiusToFahrenheit(float celsius) { return ((celsius * 9) / 5) + 32; }}
Pokrenemo program u našoj virtuelnoj mašini.
30
LitereaturaBeginning Android 4 Application Development - WROX – Wei-Meng Lee
Lynda.com
Beginning Android 4 – Apress - Grant Allen, Mark Murphy