3. diel - Android programovanie - Android API a štruktúra projektu
Čo je to Android API?
Android API by si určite hneď na úvod žiadalo podrobnejšie vysvetlenie. Verzia API určuje, aké triedy a funkcionalitu môžeme pri tvorbe našej aplikácie použiť. Ak zvolíme API napríklad verzie 15, aplikácia pobeží na všetkých telefónoch s API 15 až napr. 29 (kde 29 je tu aktuálne posledná verzia). Ovšem používateľ so starším zariadením s API 14 aplikáciu nespustí.
Všeobecne platí, že čím vyššia API použijeme, tým viac máme pri programovaní možností. Nielen, že budeme môcť využiť u vyššieho API napríklad pokročilé animácie, ale tiež si programovanie uľahčíme. U staršieho API musíme napr. Riešiť zákaz zmeny orientácie alebo možnosť uspávanie aktivity priamo v Java kódu, čo je značne zložitejšie oproti riešenie rovnakého problému vo vyššom API, kde stačí niekedy aj jeden riadok v XML kódu.
V prípade našej prvej aplikácie nám stačí nízke API. Ak zvolíme napr. API 10 (Android 2.3.3), naše aplikácie pôjde takmer všetkým. Z toho vyplýva, že čím nižšia API zvolíme, tým viac užívateľov bude môcť aplikáciu používať. Google ale vývojárov núti podporovať určité API pri pridanie novej aplikácie do Play a toto číslo sa stále zvyšuje (Pre rok 2020 je to API 29), takže nemôžeme zas voliť úplne nízke čísla. Ak by sme vyvíjali napríklad nejakú zložitejšie hru, alebo aplikáciu, ktorá potrebuje rôzne zložité animácie atď., Je lepšie zvoliť vyššiu API kvôli viac funkciám.
Nakoniec sa pred nami otvorí vývojové prostredie, v ktorom je pripravená jedna (hlavná) Aktivita (obrazovka), obsahujúce text "Hello World!".
Gui Android Studia
Na nasledujúcom obrázku si v rýchlosti ukážeme umiestnení niektorých dôležitých ovládacích prvkov Android Štúdiá:
Sú to:
- Ponuka základných užívateľských komponentov, ktoré môžeme do otvoreného layoutu pretiahnuť.
- Component Tree - Stromové zobrazenie vložených komponentov do layoutu.
- Najväčšia časť zaberá náhľad vytváraného layoutu.
- Prepínacie tlačidlá, ktorými môžeme zobraziť iba náhľad layoutu, iba XML kód layoutu a alebo oboje zároveň.
- Ak v Component Tree vyberieme nejaký objekt, napr. Náš
TextView
, objaví sa nám tu výpis všetkých parametrov, ktoré môžeme komponente nastaviť. Všetky tieto parametre je možné nastavovať aj "ručne" priamo v XML. - Tu je niekoľko rozbaľovacích menu s možnosťami zobrazenia náhľadu
našej aplikácie. Sú to najmä:- Symbol otočenie zariadenia - Simulácia
otočenie zariadení
- Symbol telefónu s nápisom "Pixel" - Možnosť zobraziť layout podľa vybraných typov zariadení a ich parametrov
- Zelená hlavička robota - Možnosť nastavenia verzia Android, pretože niekedy môže mať verzia API vplyv na vzhľad (môžeme prepnúť iba do tých verzií, ktoré máme stiahnuté v SDK Manageru)
- Symbol oka - Okrem iného môžeme zobraziť aj okolité objekty (toolbar aplikácie a tlačidlá telefónu).
Štruktúra projektu
Android Studio nám už pripravilo nejakú základnú štruktúru projektu i kód. Poďme si ju popísať. Vidíme ju v ľavej časti okna vývojového prostredia.
Na obrázku je vidieť zobrazená štruktúra v režime "Project". Iné režimy môžeme prepínať v hornej časti nad oknom so štruktúrou projektu. Ak nám stačí zjednodušená verzia, nad štruktúrou prepneme do "Android".
Kľúčové je pre nás zložka app/
, ktorá sa ďalej vetví
na:
build/
- Sem si Android Studio samo ukladá potrebnej predkompilované časti kódov. Nás táto zložka nemusí zaujímať.libs/
- Sem sa ukladajú knižnice našej aplikácie, ak by sme chceli pridať nejakú funkčnosť nášmu projektu.src/
- Obsahuje všetky zdrojové súbory v niekoľkých podadresároch, z ktorých nás bude zaujímať hlavne zložkamain/
.
Zložka main/
sa ďalej vetví na java/
a
res/
:
java/
- Obsahuje súbory zdrojového Java (Kotlin) kódu usporiadané do balíčkov. V rozsiahlejšom projekte je dobré rozdeliť zdrojový kód aplikácie do viac balíčkov - napríklad pre aktivity, objekty, fragmenty, Listener, služby atď., Ale o tom až neskôr.res/
- Tu sú uložené všetky externé zdroje aplikácie (resources), ako sú obrázky, súbory XML s rozložením okná, reťazce, animácie, definície farieb, zvukové súbory, fonty atď. Táto zložka obsahuje ďalšie podzložky:drawable
- Súbory s obrázkami, súbory.xml
s definíciou vzhľadu časťou komponentov (napr. ich pozadí), súbory.svg
atď., ktoré sú použité v aplikácii. Môžu tu byť aj ďalšie zložky pre alternatívne zdroje pre špecifické konfigurácie obrazovky (podľa hustoty pixelov, rozlíšenie obrazovky). Systém Android si potom vyberie ten variant obrázku, ktorá najviac vyhovuje parametrom displeja konkrétneho zariadenia. Zložky s týmito alternatívnymi zdrojmi môžu byť pomenované akodrawable-hdpi/
,drawable-mdpi/
,drawable-xhdpi/
,drawable-xxhdpi/
,drawable-xxxhdpi/
layout/
- Tu sa nachádza XML súbory, v ktorých definujeme vzhľad používateľského rozhrania rôznych častí aplikácie. V novo vytvorenom projekte Hello World! sa jedná o jeden súbor s názvomactivity_main.xml
, ktorý obsahuje rozvrhnutie užívateľského rozhrania hlavné Aktivity (hlavného okna) budúce aplikácie.drawable
- Súbory s obrázkami, súbory.xml
s definíciou vzhľadu časťou komponentov (napr. ich pozadí), súbory.svg
atď., ktoré sú použité v aplikácii. Môžu tu byť aj ďalšie zložky pre alternatívne zdroje pre špecifické konfigurácie obrazovky (podľa hustoty pixelov, rozlíšenie obrazovky). Systém Android si potom vyberie ten variant obrázku, ktorá najviac vyhovuje parametrom displeja konkrétneho zariadenia. Zložky s týmito alternatívnymi zdrojmi môžu byť pomenované akodrawable-hdpi/
,drawable-mdpi/
,drawable-xhdpi/
,drawable-xxhdpi/
,drawable-xxxhdpi/
layout/
- Tu sa nachádza XML súbory, v ktorých definujeme vzhľad používateľského rozhrania rôznych častí aplikácie. V novo vytvorenom projekte Hello World! sa jedná o jeden súbor s názvomactivity_main.xml
, ktorý obsahuje rozvrhnutie užívateľského rozhrania hlavné Aktivity (hlavného okna) budúce aplikácie.mipmap/
- Obsahuje ikony aplikácie, ktoré sú rovnako ako v priečinkudrawable/
rozdelené do niekoľkých alternatívnych typov podľa rôznych parametrov displejov rôznych zariadení (mipmap-hdpi/
,mipmap-mdpi/
,mipmap-xhdpi/
,mipmap-xxhdpi/
,mipmap-xxxhdpi/
).values/
- Do tejto zložky ukladáme súbory XML, ktoré definujú jednoduché hodnoty, ako sú reťazce, polia, celé čísla, rozmery, farby, štýly atď .. Na ne potom odkazujeme z kódu aplikácie alebo z XML návrhu používateľského rozhrania.values/
- Do tejto zložky ukladáme súbory XML, ktoré definujú jednoduché hodnoty, ako sú reťazce, polia, celé čísla, rozmery, farby, štýly atď .. Na ne potom odkazujeme z kódu aplikácie alebo z XML návrhu používateľského rozhrania.
activity_main.xml
Okno je teda definované v súbore res/layout/activity_main.xml
.
V tomto rozvrhnutie sa nachádza jeden TextView
zobrazujúci text
"Hello World!" TextView
je, ako názov napovedá, komponenta pre
zobrazenie textu.
strings.xml
V activity_main.xml
je komponente TextView
text
nastavený týmto riadkom:
android:text="@string/hello_world"
Všimnite si, že text "Hello World!" tu nie je zapísaný priamo, ale ako
odkaz @string
, ktorý vedie na súbor res/strings.xml
.
Až tu je definované aký text má reťazec hello_world
. Prečo
texty do okna vkladáme tak zložito? Odpoveď je jednoduchá - keď sa v
budúcnosti rozhodneme našu aplikáciu preložiť do iného jazyka, len
odkážeme na iný súbor s textami a nebudeme musieť celú aplikáciu
prepisovať. Preto sa tento štandardný spôsobu budeme držať a
všetky texty aplikácie budeme mať na jednom mieste, v súbore
res/strings.xml
.
Ak sa pozrieme do onoho súboru res/strings.xml
, nájdeme tu
riadok:
<string name="hello_world">Hello World!</string>
Hodnota reťazca s názvom hello_world
je teda
"Hello world!"
;
Pre preloženie aplikácie do iného jazyka by potom stačilo pridať zložku
values-cs/
a do nej prekopírovať strings.xml
. V ňom
by sme prepísali jednotlivé texty do češtiny (tu na hodnotu
"Ahoj Svete! "
). Aplikácia pri spustení na zariadenie,
ktoré je v jazyku Čeština, potom bude ťahať hodnoty pre jednotlivé stringy
z práve novo vytvoreného súboru.
AndroidManifest.xml
Ako posledný a najdôležitejší súbor tu máme manifest. Ten sa musí nachádzať v koreňovom adresári každej aplikácie a obsahuje informácie o našej aplikácii, ktoré odovzdá Androidu ešte predtým, než ju spustí. Manifest je teda vstupným bodom do každej aplikácie.
Nachádza sa tu jednotlivé aktivity a ich nastavenia, práva aplikácie,
ikona atď. Všetky povolenia, napr. K prístupu na internet alebo oprávnenie k
obrázkom galérie, ktorá aplikácia požaduje od užívateľa povoliť, sú
vývojára definované práve v súbore AndroidManifest.xml
. Ďalej
môžeme v manifeste špecifikovať požiadavky aplikácie na hardware
zariadenia. Ak vytvoríme aplikáciu, ktorá vyžaduje (deklaráciou v
manifeste), aby zariadenie malo fotoaparát, nebude užívateľovi v obchode
Google Play táto aplikácia zobrazená, ak jeho zariadenie nie je fotoaparátom
vybavené. Z počiatku tento súbor upravovať nemusíme.
Teraz už poznáme všetko potrebné k tomu, aby sme skúsili našu prvú aplikáciu Hello World! spustiť.
V budúcej lekcii, Android programovanie - Spustenie aplikácie (zariadenia / emulátor) , pripravíme reálne zariadenie s Androidom na spustenie kalkulačky a tiež si vytvoríme virtuálne zariadenia v emulátora.