Layouts Organizacija grafičkih elemenata Kao što je prethodo apoeuto,dokueti pisai u XML jeziku, koji se koristi za defiisaje formata podataka u Android-u, imaju hijerarhijsku strukturu stabla. Ovi dokumenti u okviru Andorid aplikaije defiišu layout-e. Laout u Adroidu defiiše strukturu korisičkog iterfejsa aplikaije. Prateći hijerarhijsku strukturu, svi elementi layout-a grade se hijerathijski koristeći Vie i VieGroup ojekte. View i ViewGroup ViewGroup je osnovna klasa za layout kontejere koji sadrže Vie eleete kao soju deu i odgovorni su sa njihov raspored na ekranu View je osnovni element za pravljenje korisničke sprege. To je pravougaoni objekat na ekranu odgovoran za iscrtavanje sadržaja i obradu događaja. View komponente su organizovane u strukturu poput stabla i mogu biti definisane u XML deskriptoru ili u run-time-u. Slika 1 Hijerarhija View-a koji definiše UI layout Deklarisaje korisičkog iterfejsa u XML datotekaa odajao izgled aplikaije od prograskog koda koji kotroliše poašaje aplikaije. Takođe, oogućaa korisiku da prilagodi izgled aplikaije za različite izglede, orijetaije i eličie ekraa uređaja za koje je aplikaija prediđea. Priliko preođeja aplikaije, saka XML datoteka se prevodi u View resurs. O tome kako se rukuje oi resursia uutar prograskog koda, iće reči u poglalju Adroid Atiit.
Svaki View I ViewGroup ojekat podržaa sei sojstee atriute. Neki su speifiči u zaisosti od View objekta, ali takođe i iaju asleđei od strae ilo kog Vie ojekta koji asleđuje Vie klasu. Neki su, dakle, zajedički si Vie ojektia zog toga što asleđuju koresku Vie klasu. Prier takvog atributa je ID atribut. Ostali atributi se smatraju parametrima layout-a koji opisuju orijentaciju određeih ojekata u okiru laout-a, kao i jihou eličiu. ID Saki Vie ojekat ože iate eloroji idetifikator sa koji je poeza, kako i se jedisteo izdvojio u okviru View stabla. Priliko preođeja aplikaije, oaj idetifikator se refereira kao eloroja uerička redost, dok se priliko dodeljiaja u okiru XML datoteke koriste Strig vrednosti. Sintaksa za upotrebu ovog atributa je: android:id="@+id/moj_element" Simbol (@) a početku oog zakoog iza ozačaa da XML parser trea da parsira ostatak ID String-a i identifikuje ga kao ID resurs. Siol + ozačaa da je oo oi resurs koji se ora kreirati i urstiti eđu postojeće. Ne ora se koristiti + siol, takođe se ože aesti uesto jega i ieski prostor adorid paketa. Svi resursi u okviru Andorid-a čuaju se u R.jaa datotei.
Layout parametri Layout atributi sa nazivom layout_nesto defiišu paraetar layout-a za View objekat. Svaka VieGroup klasa ipleetira VieGropu.LaoutParas klasu u okiru koje se sadrže tipoi koji defiišu eličiu i poziioirajuće paraetre sakog Vie-a naslednika. Svaki View mora definisati svoje redosti laout_idth širia i laout_height isia paraetara. Mogi takođeude ogućost defiisaja argia i graia. Oi paraetri ogu s defiisati preizi redostia, što ije preporučljio iz razloga što laout-i trea da izgledaju isto a sako tipu i eličii ekraa uređaja, što ije zagaratoao ukoliko se ode redosti defiišu preizi eri jediiaa. Rešeje leži u upotrebi relativnih vrednosti: wrap_content - defiiše da ie ograiči soju eličiu a diezije koje zauzia jego sadržaj. match_parent - defiiše da ie prilagodi soju eličiu eličii soje roditeljske Vie grupe. Najčešći layout-i Saka klasa koja asleđuje VieGropu klasu pruža jediistei ači za prikaz ie eleeata uutar je. Neki od ajčešće korišćeih laout tipoa ugrađeih u Adroid platforu su: Linear Layout layout koji svoje pripadnike organizuje u vertikalnu ili horizontalnu kolonu. Kreira se i traka za pomeranje vidljivog dela ekrana (engl.scrollbar) u zavisnosti od odnosa dužie prozora sa sadržaje i ekrana. Relative Layout oogućaa speifiiraje poziije pripadaućih ojekata relatio u odnosu jedan na drugog, ili u zavisnosti od pozicije roditeljske grupe. Ova dva layout-a su ajzastupljeija, a pored jih su takođe prisuti i: ConstraintLayout, WebView,... Najčešći elementi layout-a Eleeata koji se grupišu uutar layout-a u okviru Android-a ima mnogo. Neki od najzastupljenijih su: TextView Button ListView EditText RadioButton
CheckBox Itd Implementacija nekih od navedenih elemenata u okviru layout-a: <Button android:id="@+id/button_id" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/dugme Start" /> Slika 2 - Dugme (engl. Button) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text_view_id" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/moj prvi text view" /> </LinearLayout> Slika 3 - Prikaz teksta (engl. Text View) <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> Slika 4 - Lista (engl. ListView)
Activity Aktivnost egl. Atiit se azia jeda prozor uutar aplikaije sa korisički iterfejso, koji je namenjen za interakciju korisnika sa aplikacijom. Potrebno je da svaka aplikacija ima bar jednu, glavnu aktivnost, koja se prikazuje prva pri pokretanju. Kreiranje prazne aktivnosti: File->New->Activity->Empty Activity Priliko kreiraja oe aktiosti, oogućeo je korišćeje eć predefiisaih teplate aktiosti sa ipleetirai grafički kopoetaa kao što su eiji, aigaioi dugići, i sl. Više detalja o postojeći teplate aktiostia a liku : https://developer.android.com/studio/projects/templates.html Podaci o kreiranim aktivnostima se nalaze u AndroidManifest.xml fajlu. Saka aktiost asleđuje klasu Activity, koja sadrži deklaraije allak etoda žiotog ilklusa aktiosti, čije ojašjeje sledi.
Stanja Saka aktiost ože da se ađe u jedo od staja iz koačog skupa u so žioto iklusu. Kako i se a odgoarajući ači oglo reagoati a prelazak u staja, asleđiaje klase Activity, oogućeo je ipleetiraje allak etoda koje se poziaju pri prelasku u određeo staje. Sledi kratak opis svake od callback funkcija. oncreate Ovo je jedina metoda koju je obavezno implementirati. Poziva se samo jednom, kada aktivnost pređe u staje Created, tj. kada je aktivnost inicijalizovana. Shodno tome, u njoj je potrebno implementirati inicijalizaciju komponenti. U njoj je potebno pozvati metodu setcontentview kojoj se prosleđuje ojekat klase Vie, koji je potreo prikazati, ili.l fajl sa defiisai grafički izgledo. onstart Metoda onstart se aktivira odmah posle poziva oncreate metode. Po pozivu, aktivnost je vidljiva korisiku, ali još uek e ože itereaguje sa jo. Po zaršetku izršaaja, prelazi u staje Started posle čega se pozia etoda oresue. onresume Sada aktiost prelazi u glai pla i korisik ože da itereaguje sa jo. Aktiost će ostati u oo staju se dok se e desi eki događaj koji i skreuo fokus sa je, kao što je pr. gašeje ekraa, prelazak u drugu aktivnost, otvaranje dijaloga i sl. Tada aktivnost prelazi u stanje Paused i sistem poziva onpause callback metodu. Kada se aktivnost vrati u stanje Resumed, oresued etoda će pooo biti pozvana. onpause Oa etoda se pozia kada se desi idikaija da korisik apušta aktiost ili kada oa iše ije u prvom planu, kao npr. kada se prikazuje dijalog. U ovoj metodi je potrebno privremeno zaustaviti sve funkcije, a po povratku i pozivu onresume ponoo aktiirati. Aktiost će iti u oo staju se dok e postae u potpuosti eidljia korisiku, kada će se pozati etoda ostop i preći u staje Stopped. onstop Kada aktiost iše ije idljia korisiku, aktiost prelazi u staje Stopped i sistem poziva etodu ostop. Oo se ajčešće dešaa kada druga aktiost stupi kao priara a ekra. U ooj metodi bi trebali da se oslobode svi resursi koji nisu potrebni dok je aktivnost u pozadini. Iz ovog stanja oguć je prelazak ili u poou iterakiju, ili aktiost ia uištea i uklojea iz eorije. Ukoliko se vrati u fokus, poziva se metoda onrestart.
onrestart Pozia se posle ostop etode ukoliko se korisik pooo rati a ju. Oa je praćea pozio onstart i onresume. ondestroy Oa etoda se pozia kada je aktiost uištea, tj. pre ego što pređe u staje Destroyed. To se ože dogoditi ekspliito, poziaje fukije finish, pritiskom dugmeta za povratak (back), ukoliko se desi rotacija ekrana, ili ako je operativnom sistemu potrebno da oslobodi resurse za drugu namenu. Sledeći put pri pokretaju aktiosti, iće pozaa fukija ocreate koja rekreira proes. Intenti Itet je klasa koja koordiira preošeje poruka izeđu kopoeti aplikaije, koja sadrži opis pojedie akije koja trea da se izrši. Ukoliko aplikaija ia iše aktiosti, potreo je apraiti ezu izeđu jih, i po potrei preeti određee podatke. Što zači, da se iz jede aktiosti ože pokreuti prikazati druga aktiost, a eki događaj (npr. klik dugmeta), i u tu svrhu se koristi klasa Intent. Ova klasa ima i druge namene, pre svega, za pokretanje servisa, broadcast receiver-a, kao i preošeje podataka izeđu aktiosti.