CafeMobil Android aplikacija - 1. dio
Prije nego krenem sa izradom aplikacije i tutoriala, želim napomenuti da je za praćenje potrebno barem nekakvo predznanje iz programiranja, a bilo bi poželjno da ste upoznati sa objektno orijentiranim programiranjem. Probat ću objasniti sve u što više detalja, baš kao da nikad niste ništa radili za Android.
Cijeli izvorni kod programa će se nalaziti na GitHub-u
Ako imate bilo kakvih pitanja, slobodno napišite tu ili u temi koja bude prikladna. Također ako imate koji savjet za nadodati, slobodno, tek sam se nedavno počeo ozbiljnije baviti Android programiranjem tako da sigurno još imam za naučiti puno.
U ovom prvom dijelu ću samo kreirati projekt sa "Blank Activity" template i objasniti strukturu projekta, najbitnije datoteke i što je sve došlo uz navedeni template.
Projekt će biti izrađen u Android Studio razvojnom okruženju, možete ga besplatno preuzeti na:
http://developer.android.com/sdk/index.html
Pri otvaranju Android Studia, kliknemo na novi projekt i upišemo ime aplikacije i domenu (korištena je domena example.hr što ne postoji). Generiran Package name je hr.example.cafemobil i on mora biti jedinstven, treba se razlikovati od svih drugih aplikacija jer će se instalirati u taj paket na Android uređaju. Također nije ni moguće postaviti aplikaciju na Play Store ukoliko se ime paketa podudara sa drugom aplikacijom.

U sljedećem prozoru biramo koje sve Android verzije podržavamo. Za početak možemo staviti API 8 što odgovara Androidu 2.2 (Froyo) i po Google-ovoj procjeni radi na skoro 100% uređaja koji se spajaju na Play Store. Ako kasnije bude potrebno koristiti neke funkcije koje nisu podržane u API 8, lako se promijeni Minimum API ili se dodaju support biblioteke koje služe podržavanju starih Android verzija.

Odabir "Blank Activity" kako sam već spomenuo:

Sada projekt za odabranim predloškom sadrži sljedeće datoteke:

Folder "manifests" sadrži AndroidManifest.xml datoteku koja predstavlja aplikaciju Android uređaju, u njoj su osnovne informacije i trenutno izgleda ovako:
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hr.example.cafemobil" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
android:icon predstavlja ikonu koja će se prikazati na Androidu
android:label je naziv aplikacije
android:theme je tema aplikacije
Unutar <activity> </activity> tagova, nalaze se informacije o aktivnostima koje se koriste u aplikaciji (u ovom slučaju "MainActivity"). U aktivnostima se prikazuje sadržaj na ekranu i unutar njih se implementiraju funkcionalnosti. Ukoliko se želite baviti Android programiranjem, svakako savjetujem da pročitate detaljnije što je Activity na sledećem linku:
http://developer.android.com/guide/components/activities.html
Najvažnije za znati je životni vijek aktivnosti, koji je prikazan na dijagramu ispod

Unutar <intent-filter> </intent-filter> tagova je označeno da se radi o "MAIN" aktivnosti, odnosno da je prva aktivnost koja se pali prilikom paljenja aplikacije, a "LAUNCHER" znači da se ta aktivnost pokreće iz Android launchera.
Vrijednosti (@mipmap/ic_launcher, @string/app_name, @style/AppTheme) kao i sve druge koje se referenciraju sa "@" se nalaze u "res" folderu (resources).
"res" folder trenutno sadrži foldere:
drawable - slike i xml opisnici izgleda elemenata koje postavljamo u aplikaciju (npr. gumbovi, tekst, itd.)
layout - xml datoteke sa opisom izgleda aktivnosti/fragmenta (fragmenti trenutno neće biti objašnjavani, nije potrebno na početku).
Trenutno sadrži activity_main.xml datoteku koja opisuje izgled MainActivity aktivnosti i prilikom otvaranja se prikazuje u design mode:

Sa lijeve strane se nalazi paleta sa koje možemo jednostavno dodavati nove elemente na ekran, ali više o tome kasnije.. Na dnu imamo izbornik kojim možemo birati između Design i Text mode. Ako izaberemo Text mode, prikazat će se tekst koji se generira kada postavljamo elemente i tamo ih također možemo dodavati i mijenjati.
menu - xml datoteke sa izbornicima, trenutno se unutra nalazi menu_main.xml koji sadrži opciju "Settings". Ti izbornici se najčešće nalaze u ActionBar-u na Androidu i prikazani su sa 3 točke u gornjem desnom kutu.
Code:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/action_settings" android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
android:id je jedinstveni identifikator pomoću kojeg pristupamo svim xml elementima u Java kodu. Oznaka "@+id" govori da stvori novi "id" sa vrijednosti koja je iza "/".
android: orderInCategory služi za postavljanje redosljeda kojim se prikazuje izbornik, ako napravimo novi <item> sa orderInCategory="99" on će se prikazati prije njega.
android:showAsAction="never" je oznaka da taj izbor nikad ne prikaže na samom ActionBar-u, nego da bude sakriven. Ako bi npr. dodali tražilicu, možemo ju postaviti da se uvijek prikazuje.
mipmap - sadrži png datoteke koje koristimo u aplikaciji. Trenutno aplikacija sadrži 4 png slike sa istim imenom, ali različitim veličinama kako bi se prilagodilo svim veličinama ekrana. Te 4 slike su launcher ikone koje su prije spomenute u AndroidManifest-u.
values sadrži xml datoteke sa vrijednostima koje koristimo unutar aplikacije. Trenutno su unutra dimens (dimenzije), strings (tekstovi) i styles (tema aplikacije). Vrlo važno je koristiti values datoteke jer npr. tu možemo prilagoditi aplikaciju za sve veličine ekrana u dimens, prevesti sve stringove na drugi jezik i Android sam odabere koji će jezik koristiti, itd. Još česta primjena je colors.xml u kojoj definiramo boje koje će aplikacija koristiti često, pa ako želimo promijeniti boju potrebno je samo tu promijeniti vrijednosti.
Gradle Scripts sadrži skripte potrebne za kompajliranje projekta, trenutno nam nije puno važno. Ja osobno najčešće koristim build.gradle datoteku jer unutra se dodaju nove biblioteke u projekt.
I još ostaje java/hr.example.cafemobil folder/paket koji sadrži Java datoteke. Tu se trenutno nalazi samo MainActivity koji predstavlja glavnu aktivnost aplikacije.
Code:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Kod trenutno sadrži 3 funkcije.
Unutar onCreate funkcije se izvršavaju naredbe prilikom pokretanja aktivnosti (vratite se natrag na dijagram životnog vijeka aktivnosti). Sada se samo postavlja layout na ekran pomoću funkcije setContentView, a parametar je layout koji se nalazi u "/res/layout/activity_main". Unutar Java koda se resursima pristupa sa "R.".
onCreateOptionsMenu je funkcija koja postavlja izbornik na ekran prilikom paljenja (uočite R.menu.menu_main).
onOptionsItemSelected funkcija se pokreće prilikom klika na neke od opcija. Trenutno samo provjerava dali je kliknuta akcija settings, ako je istina - vrati true. Još nema nikakvu funkcionalnost.
Klikom na Run tipku, projekt će se kompajlirati i ponuditi će se instalacija aplikacije na spojeni Android uređaj. Ukoliko nemate Android uređaj, moguće je napraviti novi virtualni uređaj na kojem se mogu aplikacije testirati.
Pokretanjem aplikacije sada dobijamo ovakav izgled:

To bi bilo to za sad, nadam se da ima zainteresiranih ljudi
Trenutno radim na jednom drugom projektu pa nisam siguran kad ću stići nastavak napisati.
Bookmarks