Frenkelove vezbe za Parkinsonovu bolestFull description
Vezbe Za Trbusnjake!!!
Natalio Oswaldo Salinas Ponce Jhonathan Noe Suarez ChavezDescripción completa
Descripción completa
Descripción completa
descripcion del so androidDescripción completa
Descripción completa
androidDescripción completa
anDescripción completa
Criando aplicações em android
Descrição completa
Full description
Descripción completa
Criando aplicações em android
Sistema AndroidDescripción completa
Android aplikacije
Android SDK. AVD, Hell He lloo Wo Worl rld d ap apli lika kaci cija ja
Android SDK • Prvi rvi i najvažni ažnijji soft oftver koji je potreb rebno preu reuzeti je Android SDK • On sadrži mnoštvo korisnih elemenata: debugger, biblioteke emulator dokumentaci u… • Android SDK koristi Java Development Kit (JDK), pa ukoliko JDK ne postoji na računaru, potrebno ga je preuzeti sa lokacije http://www.oracle.com/technetwork/java/javase/downl oads/index.html i instalirati • Android SDK se može preuzeti sa http://developer.android.com/sdk/index.html • Nakon preuzimanja dobija se zip fajl koga je potrebno raspakovati na lokalni disk.
Android SDK Manager
• Dostupan je na Window>Android SDK Manager • Upravlja različitim verzijama Android SDK-a, preko njega se vrši update
Android Virtuelni uređaji (AVD, Android Virtual Device) • Dostupan je na Window>Android Virtual Device Manager • Ovo je instanca emulatora koja omogućava modeliranje realnog uređaja • Može se napraviti veći broj ovih virtualnih uređaja, koji nam omogućavaju simulaciju rada aplikacija na uređajima različitih karakteristika
Kreiranje AVD • Potrebno je kliknuti na dugme New, datim ime , uređaja, i izvršiti ostala podešavanja, i kliknuti OK kako bi se napravio novi AVD.
Pokretanje AVD • U Android Virtual Device Manager selektovati virtuelni uređaj, kliknuti na Start… i zatim na Launch
AVD • Virtuelni uređaj je pokrenut u skladu sa podešavanjim a koje smo napravili
Hello World aplikacija • Daje se postupak pravljanja jedne Android aplikacije • Otići na File>New>Android Application Project ▫ ▫ Project Name: HelloWorld ▫ Package Name: zr.vts.it
• Izabrati sve podrazumevane opcije do kraja rada čarobnjaka • Na narednim slikama je ilustrovan izgled IDE projekta HelloWorld, i postupak pokretanja ove aplikacije
IDE – Hello World projekat
Pokretanje Hello World aplikacije
Od Hello World do Pozdrav Svete • Napraviti izmenu kao na slici i ponovo pokrenuti AVD
Anatomija Android aplikacije • Postoje sledeći folderi:
▫ src – Sadrži .java izvorne datoteke, u ovom slučaju MainActivity.java koja sadrži kod za funkcionisanje aplikacije ▫ gen – Sadrži R.java datoteku koja referencira sve resurse projekta. Ne treba je modifikovati. ▫ Android 4.2.2. – sadrži android.jar koja sadrži sve biblioteke klasa neophodne za jednu Android aplikaciju ▫ assets – sredstva koja koristi aplikacija ▫ bin – ovde se generiše između ostalih .apk fajl koja predstavlja instalacionu verziju aplikacije ▫ res – sadrži sve resurse koji se koriste u aplikaciji ▫ AndroidManifest.xml – manifest datoteke, koji sadrži privilegije, filtre… koji važe za aplikaciju
AndroidManifest.xml • U ovoj datotecu su definisani između ostalog: ▫ Paket aplikacije: package="zr.vts.it“ ▫ Kod verzi e a likaci e: android:versionCode="1" ▫ Naziv verzije aplikacije: android:versionName="1.0" ▫ Minimalna Android verzija: android:minSdkVersion="8“ ▫ Ikonica: android:icon="@drawable/ic_launcher“ ▫ Naziv aplikacije: android:label="@string/app_name"
Dizajniranje korisničkog interfejsa pomoću pogleda
Pogledi • Anstdroid pruža mogućnost za rad sa različitim pogledima, gde između ostalog spadaju: ▫
– , … Prikaz i unos teksta i dugme… ▫ Picker pogledi – TimePicker, DatePicker. Omogućavaju selektovanje stavki iz liste. ▫ List pogledi – ListView, SpinnerView. Prikaz dužih lista stavki.
Osnovni pogledi • Osnovni pogledi se jednostavno koriste pri projektovanju korisničkog interfejsa Android aplikacije: ▫ ▫ ▫ ▫ ▫ ▫
– EditText - unos ili izmena teksta Button – dugme, može se pritisnuti ImageButton – dugme koje ima i sliku CheckBox – taster sa 2 stanja: uključeno i isključeno ToggleButton – slično kao CheckBox ali drugačiji prikaz ▫ RadioButton ▫ RadioGroup
TextView • TextView se koristi pri prikazivanju teksta korisnicima • Primer:
EditText • Omogućava editovanje teksta • android:id omogućava jedinstvenu identifikaciju • Primer:
Button • Predstavlja taster koji je moguće pritisnuti. • Vrednost osobine android:onClick je naziv funkcije koja se izvršava kada se klikne na dugme. • Primer: < u on an ro : = + n ave android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Snimi" android:onClick="btnSaved_clicked"/> • U tom slučaju potrebno je obraditi klik događaj u odgovarajućem java dokumentu. • Primer: public void btnSaved_clicked(View view){ Toast.makeText(getBaseContext(), "Snimanje...", Toast.LENGTH_LONG).show(); }
ImageButton • Slično kao u kod Button, ali postoji slika • Osobina android:src omogućava izbor slike
CheckBox • Tip tastera koji sadrži dva stanja: selektovano i deselektovano
ToggleButton • Prikazuje selektovana/deselektovana stanja korišćenjem svetlosnog indikatora
Radio Group i Radio Button • RadioGroup grupiše više Radio Button-a, pri čemu samo jedan Radio Button može biti seletovan u jednom momentu u okviru RadioGroup • Primer:
Osnovni pogledi
Picker pogledi • Često se vrši selektovanje datuma i vremena u Android aplikacijama. Za ovu namenu koriste ▫ TimePicker – selekcija vremena ▫ DatePicker – selekcija datuma
TimePicker pogled • Time TimePi Pick cker er omogu omoguća ćava va sele selekc kcij iju u vrem vremen ena. a. • Primer: " =" android:layout_width="wrap_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_height="wrap_content" />
Kako videti trenutno vreme? Uneti navedeni kod u odgovarajući Java fajl package vts.zr.vts_it_vezbe; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TimePicker; im ort ort andr androi oid. d.wi wid d et.T et.Toa oast st public class DateTimePicker extends Activity { TimePicker timePicker;
List pogledi • List pogledi omogućavaju prikaz dužih lista stavki. Za ovu namenu koriste se: ▫ ▫ SpinnerView
ListView pogled • ListView pogled omogućava rad sa selekciju stavki iz ove liste • Primer:
ListView pogled – java kod package vts.zr.vts_it_vezbe; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class ListViewPicker extends ListActivity { Strin studPro rami = "Inženjerski menadžment", "Tehnološko inženjerstvo", "Mašinsko inženjerstvo", "Tekstilna konfekcija i dizajn" }; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, studProgrami)); } public void onListItemClick( ListView parent, View v, int position, long id) { Toast.makeText(this, "Vaš izbor: " + studProgrami[position], Toast.LENGTH_SHORT).show(); } }
SpinnerView pogled • Spinner View pogled omogućava rad sa selekciju stavki iz ove liste • Primer:
SpinnerView pogled – java kod package vts.zr.vts_it_vezbe; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner; public class SpinnerViewPicker extends Activity{ String[] studProgrami = { "Inžen erski menadžment" "Tehnološko inženjerstvo", "Mašinsko inženjerstvo", "Tekstilna konfekcija i dizajn" }; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.spinnerviewpicker); Spinner s1 = (Spinner)findViewById(R.id.spinner1); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_single_choice, studProgrami); s1.setAdapter(adapter); } }
Aktivnosti i namere
Aktivnost • Aktivnost je prozor koji sadrži korisnički interfejs u aplikaciji • Glavni cilj aktivnosti je omogućavanje interakcije sa korisnikom • Od trenutka kada se aktivnost prikaže na ekranu, do njenog skrivanja, prolazi se kroz veći broj faza u njenom “životnom ciklusu” • Razumevanje ovog životnog ciklusa je neophodno za obezbeđenje ispravnog funkcionisanja aplikacije • U nastavku se opisuje postupak kreiranja nove aktivnosti.
activity101activity.xml • U direktorijumu res/layout treba napraviti fajl activity101activity.xml. U nastavku se daje njegov sadržaj:
Razumevanje aktivnosti • Da bi se stvorila nova aktivnost neophodno je kreiranje Java klase koja nasleđuje Activity baznu klasu. Primer: package vts.zr.vts_it_vezbe; import android.os.Bundle; public class Activity101Activity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity101activity ); }
} • extends Activity znači da će posmatrana klasa biti aktivnost • R.layout.activity101activity ukazuje na konkretnu komponentu korisničkog interfejsa (xml fajl koji je naveden u prethodnom slajdu)
Deklaracija u AndroidManifest.xml • Svaka aktivnost koja se dodaje mora biti deklarisana u fajlu AndroidManifest.xml. Primer:
Životni ciklus aktivnosti • U aktivnosti postoji više događaja koji pokrivaju životni ciklus aktivnosti:
▫ onCreate() – poziva se pri prvom definisanju aktivnosti ▫ OnStart() – poziva se kada aktivnost postane vidljiva korisniku ▫ onResume() – poziva se kada or sn a zapo ne ntera c u ▫ onStop() - poziva se kada se aktivnost privremeno zaustavi ▫ onDestroy() - poziva se pre nego što se aktivnost ukloni sa sistema ▫ onRestart() - poziva se kada se aktivnost prvo zaustavi a zatim ponovo pokrene
Životni ciklus aktivnosti - Primer package vts.zr.vts_it_vezbe; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class Activity101Activity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity101activity); } public void onStart() { super.onStart(); Log.d("LC", "In the onStart() event"); }
}
Način funkcionisanja • Kada se aktivnost startuje uvek se izvršavaju događaju onStart() i onResume() • onCreate - za kreiran e i instanciran e ob ekata koji se koriste u aktivnosti • onResume() – za startovanje onih radnji koje su potrebne kada je aktivnost u prvom planu • onPause() - za zaustavljanje radnji kada aktivnost nije u prvom planu • onDestroy() – za oslobađanja resursa koji nisu potrebni kada aktivnost biva uklanjana
Namere (Intent) • Ovo je jedan od jedinstvenih Android koncepata • Namera omogućava da različitim aktivnostima iz različitih aplikacija da funkcionišu zajedno, pri čemu je obezbeđeno da se zadaci izvršavaju kao da su realizovani i jedinstvenoj aplikaciji • Kada želimo da sa jedne aktivnosti pređemo na drugu aktivnost koristimo namere • Mogu se izvršavati i ograđene aplikacije poput ▫ Browser ▫ Phone ▫ Maps…
Kako se koriste namere • Android omogućava aplikacija poziva i svoje aktivnosti ali i aktivnosti drugih aplikacija. • Primer pozivanja aktivnosti korišćenjem namere: public void onKlik(View view){ startActivity(new Intent(“ime.paketa. DrugaAktivnost”)); }
• Ukoliko je pozivana aktivnost u istom projektu može se korisiti i sledeći oblik: public void onKlik(View view){ startActivity(new Intent(this, DrugaAktivnost.class)); }
Deklaracija u AndroidManifest.xml • Druga aktivnost se mora dodati i u AndroidManifest.xml. Primer:
Vraćanje aktivnosti iz inicirane aktivnosti • Ukoliko postoji potreba za vraćanjem neke vrednosti iz inicirane aktivnosti, potrebno je aktivnosti. • Druga aktivnost obezbeđuje vrednost koja se vraća prvoj aktivnosti
Aktivnost koja poziva (i prikazuje vraćenu aktivnost) ... int request_Code = 1; public void onSecondActivity(View view){ startActivityForResult(new Intent(this, SecondActivity.class), re uest_Code _ } public void onActivityResult(int requestCode, int ResultCode, Intent data){ if(requestCode == request_Code){ if(ResultCode == RESULT_OK){ Toast.makeText(getBaseContext(), data.getData().toString(), Toast.LENGTH_LONG).show(); } } } ...
Pozivana aktivnost(koja vraća rezultat) … public void btnPotvrdi(View v){ Intent data = new Intent(); //Definisanje EditText pogleda EditText txtIme = (EditText)findViewById(R.id.etIme); //Definisanje podataka koji se vracaju data.setData(Uri.parse(txtIme.getText ().toString())); setResult(RESULT_OK, data); //gasenje ove aktivnosti finish(); } …