Professional Documents
Culture Documents
Ak.g. 2012./2013.
Zatieno licencom http://creativecommons.org/licenses/by-nc-sa/2.5/hr/
7. 11. 2012.
Creative Commons
slobodno smijete:
U sluaju daljnjeg koritenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete ovog djela. Najbolji nain da to uinite je linkom na ovu internetsku stranicu. Od svakog od gornjih uvjeta mogue je odstupiti, ako dobijete doputenje nositelja autorskog prava. Nita u ovoj licenci ne naruava ili ograniava autorova moralna prava.
Tekst licencije preuzet je s http://creativecommons.org/.
7. 11. 2012.
Sadraj predavanja
Kratki uvod u model Android aplikacija Stvaranje jednostavne aplikacije od nule Osnovni elementi korisnikog suelja
Namjere
7. 11. 2012.
Android aplikacije
7. 11. 2012.
Aktivnosti (Activities)
Jednostavni fokusirani zadatak kojeg korisnik moe initi
Usluge (Services)
Pozadinski procesi, nevidljivi u pozadini
Namjere (Intents)
Poruke koje razmjenjuju dijelovi aplikacije i aplikacije meusobno
Mapa src ovdje stavljamo cijeli programski kod Mapa res ovdje stavljamo vanjske resurse:
Jednostavni resursi (strings, colors, dimensions, styles te string ili integer polja) Styles and Themes Drawables Layouts Animations Menus
AndroidManifest.xml definira osnovne elemente Android aplikacije te putem ovlasti i filtra namjera definira njihovu interakciju
7. 11. 2012.
Aktivnost: Stvaranje
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme"> <activity android:name="FirstActivity"> <intent-filter> <category android:name="android.intent.category.LAUNCHER"/> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity> </application> </manifest>
7. 11. 2012.
Eclipse sadri GUI za olakano definiranje layout-a Novi elementi prikaza se lako dodaju u layout (drag and drop) Prilikom kreiranja aktivnosti, samo se pozove uitavanje prikaza iz layouta:
this.setContentView(R.layout.layout_name);
7. 11. 2012.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:orientation="vertical" > <TextView android:id="@+id/textViewR" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/r_text" /> <Button android:id="@+id/buttonR" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/r_button_text" /> </LinearLayout>
this.setContentView(R.layout.result_activity);
Potrebno je prepoznati korisnike radnje koje su bitne za aplikacijsku logiku (npr. zahtijevaju auriranje ili promjenu prikaza) od onih koje to nisu Primjer: Prepoznavanje pritiska gumba
Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { } });
7. 11. 2012.
Aplikacijska logika (model) je sr aplikacije Prihvaa, prilagoava i prosljeuje podatke Mijenja prikaz Koordinira aktivnosti Primjer: eksplicitno pokretanje nove aktivnosti putem namjere
7. 11. 2012.
Sadraj predavanja
Kratki uvod u model Android aplikacija Stvaranje jednostavne aplikacije od nule Osnovni elementi korisnikog suelja
Namjere
7. 11. 2012.
Dvije aktivnosti
Prva aktivnost: unos dva broja Druga aktivnost: prikaz rezultata
7. 11. 2012.
Prikaz
Aktivnost unosa brojeva Aktivnost prikaza rezultata
Upravljanje
Prepoznavanje korisnikog klika na gumbe Dohvaanje unesenih vrijednost brojeva
Model
Obavljanje operacije nad brojevima Mijenjanje prikaza Pozivanje jedne aktivnosti iz druge
7. 11. 2012.
Sadraj predavanja
Kratki uvod u model Android aplikacija Stvaranje jednostavne aplikacije od nule Osnovni elementi korisnikog suelja
Namjere
7. 11. 2012.
Aktivnosti predstavljaju prozor prikazan na zaslonu Fragmenti enkapsuliraju dijelove korisnikog suelja te omoguavaju njihovo jednostavno ponovno koritenje
7. 11. 2012.
7. 11. 2012.
Razmjetaji (layouts)
Razmjetaji nasljeuju grupe pogleda Mogu se XML dokumentom ili programski Postoje etiri glavna razmjetaja
LinearLayout
Horizontalni Vertikalni
Primjeri: http://developer.android.com/guide/topics/ui/layout/linear.html
7. 11. 2012.
7. 11. 2012.
Sadraj predavanja
Kratki uvod u model Android aplikacija Stvaranje jednostavne aplikacije od nule Osnovni elementi korisnikog suelja
Namjere
7. 11. 2012.
Kontrole unosa
7. 11. 2012.
7. 11. 2012.
7. 11. 2012.
Gumb (Button)
7. 11. 2012.
7. 11. 2012.
Kvaica (Checkbox)
7. 11. 2012.
Sadraj predavanja
Kratki uvod u model Android aplikacija Stvaranje jednostavne aplikacije od nule Osnovni elementi korisnikog suelja
Namjere
7. 11. 2012.
Context context = getApplicationContext(); CharSequence text = "Voil"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show();
7. 11. 2012.
Dijalog (Dialog)
AlertDialog,DatePickerDialog i TimePickerDialog
AlertDialog.Builder adb = new AlertDialog.Builder(this); adb.setTitle("Are you sure you want to exit?"); adb.setMessage("You will lose all unsaved data"); adb.setCancelable(false); adb.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { CurrentActivity.this.finish();} }); adb.setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); adb.show();
7. 11. 2012.
Sadraj predavanja
Kratki uvod u model Android aplikacija Stvaranje jednostavne aplikacije od nule Osnovni elementi korisnikog suelja
Namjere
7. 11. 2012.
Stog aktivnosti
Nove aktivnosti se mogu pokrenuti implicitno ili eksplicitno Trenutno aktivna aktivnost je na vrhu stoga Kad se ona zatvori (ili pritisne tipka nazad) vraamo se na prethodno aktivnu aktivnost ona je sada na vrhu stoga
7. 11. 2012.
Eksplicitnim pokretanjem aktivnost se stavlja na vrh stoga aktivnosti, dotad aktivna aktivnost ostaje na stogu Pozivanjem metode finish() ili pritiskanjem tipke back, aktivnost se zatvara i mie sa stoga
7. 11. 2012.
7. 11. 2012.
Ukoliko se primitivni tipovi podataka trebaju pohraniti trajno, preporua se mehanizam Preferences
Za prosljeivanje sloenih privremenih objekata se preporua se jedan od sljedeih pristupa:
Singleton klasa Javni (public) atribut ili metoda HashMap referenci objekata aktivnosti se prosljeuje ID objekta putem metode Intent.putExtras()
datoteke
Content Providers
SQLite DB
7. 11. 2012.
7. 11. 2012.
private static final int REQUEST_CODE = 1; Intent intent = new Intent(this, MyOtherActivity.class); startActivityForResult(intent, REQUEST_CODE);
private static final int REQUEST_CODE = 2; Uri uri = Uri.parse(content://contacts/people); Intent intent = new Intent(Intent.ACTION_PICK, uri); startActivityForResult(intent, REQUEST_CODE);
Kada aktivnost zavri kod zahtjeva (REQUEST_CODE) e biti vraen u metodi onActivityResult()
7. 11. 2012.
Kod rezultata (RESULT_CODE) - najee Activity.RESULT_OK ili Activity.RESULT_CANCELED i Podatke koji se vraaju u obliku namjere (Intent)
Namjera najee sadri URI podataka i kolekciju dodatnih prim. podataka dodanih metodom Intent.putExtras()
long selected_item_id = listView.getSelectedItemId(); Uri selectedItem = Uri.parse(content://items/ + selected_item_id); Intent result = new Intent(Intent.ACTION_PICK, selectedItem); setResult(RESULT_OK, result); finish();
7. 11. 2012.
Pri povratku iz aktivnosti koja vraa rezultat poziva se metoda onActivityResult() aktivnosti koja ju prethodno pozvala Ova metoda ima 3 argumenta:
Kod zahtjeva proslijeen pri pozivu startActivityForResult() Kod rezultata postavljen pri pozivu metode setResult Namjeru (Intent) u kojoj se nalaze podaci
protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Check which request we're responding to if (requestCode == PICK_CONTACT_REQUEST) { // Make sure the request was successful if (resultCode == RESULT_OK) { // The user picked a contact. // The Intent's data Uri identifies which contact was selected. // Do something with the contact here (bigger example below) } } }
7. 11. 2012.