37
PANEVROPSKI UNIVERZITET APEIRON FAKULTET INFORMACIONIH TEHNOLOGIJA Vanredne studije Predmet Principi programiranja Smijer Poslovna informatikaRazvoj Android aplikacija sa Java programskim jezikom (Seminarski rad) Predmetni nastavnik

Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

  • Upload
    cviga

  • View
    258

  • Download
    6

Embed Size (px)

DESCRIPTION

seminarski rad

Citation preview

Page 1: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 2: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 3: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 4: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 5: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 6: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 7: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 8: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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”

Page 9: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 10: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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”

Page 11: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 12: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 13: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 14: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 15: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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”

Page 16: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 17: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 18: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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>

Page 19: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 20: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 21: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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 {

Page 22: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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:

Page 23: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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();

Page 24: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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

Page 25: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 26: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 27: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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" />

Page 28: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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; }

Page 29: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

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.

Page 30: Igor Iric - Seminarski - Razvoj Android Aplikacija Sa Java Programskim Jezikom

30

LitereaturaBeginning Android 4 Application Development - WROX – Wei-Meng Lee

Lynda.com

Beginning Android 4 – Apress - Grant Allen, Mark Murphy