80 % bodů zdarma na online výuku díky naší Letní akci!
Pouze tento týden sleva až 80 % na e-learning týkající se PHP

Lekce 3 - Android programování - Android API a struktura projektu

V minulé lekci, Android programování - Vývojové prostředí, jsme se věnovali vývojovým nástrojům.

Co je to Android API?

Android API by si určitě hned na úvod žádalo podrobnější vysvětlení. Verze API určuje, jaké třídy a funkcionalitu můžeme při tvorbě naší aplikace použít. Pokud zvolíme API například verze 15, aplikace poběží na všech telefonech s API 15 až např. 29 (kde 29 je zde aktuálně poslední verze). Ovšem uživatel se starším zařízením s API 14 aplikaci nespustí.

Obecně platí, že čím vyšší API použijeme, tím více máme při programování možností. Nejen, že budeme moci využít u vyššího API například pokročilé animace, ale také si programování usnadníme. U staršího API musíme např. řešit zákaz změny orientace nebo možnost uspávání aktivity přímo v Java kódu, což je značně složitější oproti řešení stejného problému ve vyšším API, kde stačí někdy i jeden řádek v XML kódu.

V případě naší první aplikace nám stačí nízké API. Pokud zvolíme např. API 10 (Android 2.3.3), naše aplikace pojede takřka všem. Z toho vyplývá, že čím nižší API zvolíme, tím více uživatelů bude moci aplikaci používat. Google ale vývojáře nutí podporovat určité API při přidání nové aplikace do Play a toto číslo se stále zvyšuje (Pro rok 2020 je to API 29), takže nemůžeme zas volit úplně nízká čísla. Pokud bychom vyvíjeli například nějakou složitější hru, nebo aplikaci, která potřebuje různé složité animace atd., je lepší zvolit vyšší API kvůli více funkcím.

Nakonec se před námi otevře vývojové prostředí, ve kterém je připravena jedna (hlavní) Aktivita (obrazovka), obsahující text "Hello World!".

GUI Android Studia

Na následujícím obrázku si v rychlosti ukážeme umístění některých důležitých ovládacích prvků Android Studia:

Rozložení Android Studio

Jsou to:

  1. Nabídka základních uživatelských komponent, které můžeme do otevřeného layoutu přetáhnout.
  2. Component Tree - Stromové zobrazení vložených komponent do layoutu.
  3. Největší část zaujímá náhled vytvářeného layoutu.
  4. Přepínací tlačítka, kterými můžeme zobrazit pouze náhled layoutu, pouze XML kód layoutu a nebo obojí zároveň.
  5. Pokud v Component Tree vybereme nějaký objekt, např. náš TextView, objeví se nám zde výpis všech parametrů, které můžeme komponentě nastavit. Veškeré tyto parametry je možné nastavovat i "ručně" přímo v XML.
  6. Zde je několik rozbalovacích menu s možnostmi zobrazení náhledu naší aplikace. Jsou to zejména:
    • Symbol otočení zařízení - Simulace otočení zařízení
    • Symbol telefonu s nápisem "Pixel" - Možnost zobrazit layout podle vybraných typů zařízení a jejich parametrů
    • Zelená hlavička robota - Možnost nastavení verze Android, protože někdy může mít verze API vliv na vzhled (můžeme přepnout pouze do těch verzí, které máme stažené v SDK Manageru)
    • Symbol oka - Mimo jiné můžeme zobrazit i okolní objekty (toolbar aplikace a tlačítka telefonu).

Tyto ikonky si proklikejte a vyzkoušejte, co umí ;-)

Struktura projektu

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Android Studio nám již připravilo nějakou základní strukturu projektu i kódu. Pojďme si ji popsat. Vidíme ji v levé části okna vývojového prostředí.

Struktura nového Android projektu v Android Studio

Na obrázku je vidět zobrazená struktura v režimu "Project". Jiné režimy můžeme přepínat v horní části nad oknem se strukturou projektu. Pokud nám stačí zjednodušená verze, nad strukturou přepneme do "Android".

Klíčová je pro nás složka app/, která se dále větví na:

  • build/ - Sem si Android Studio samo ukládá potřebné předkompilované části kódů. Nás tato složka nemusí zajímat.
  • libs/ - Sem se ukládají knihovny naší aplikace, pokud bychom chtěli přidat nějakou funkčnost našemu projektu.
  • src/ - Obsahuje všechny zdrojové soubory v několika podadresářích, ze kterých nás bude zajímat hlavně složka main/.

Složka main/ se dále větví na java/ a res/:

  • java/ - Obsahuje soubory zdrojového Java (Kotlin) kódu uspořádané do balíčků. V rozsáhlejším projektu je dobré rozdělit zdrojový kód aplikace do více balíčků - například pro aktivity, objekty, fragmenty, listenery, služby atd., ale o tom až později.
  • res/ - Zde jsou uloženy všechny externí zdroje aplikace (resources), jako jsou obrázky, soubory XML s rozložením okna, řetězce, animace, definice barev, zvukové soubory, fonty atd. Tato složka obsahuje další podsložky:
    • drawable - Soubory s obrázky, soubory .xml s definicí vzhledu částí komponent (např. jejich pozadí), soubory .svg atd., které jsou použity v aplikaci. Mohou zde být i další složky pro alternativní zdroje pro specifické konfigurace obrazovky (podle hustoty pixelů, rozlišení obrazovky). Systém Android si pak vybere tu variantu obrázku, která nejvíce vyhovuje parametrům displeje konkrétního zařízení. Složky s těmito alternativními zdroji mohou být pojmenovány jako drawable-hdpi/, drawable-mdpi/, drawable-xhdpi/, drawable-xxhdpi/, drawable-xxxhdpi/
    • layout/ - Zde se nachází XML soubory, ve kterých definujeme vzhled uživatelského rozhraní různých částí aplikace. V nově vytvořeném projektu Hello World! se jedná o jeden soubor s názvem activity_main.xml, který obsahuje rozvržení uživatelského rozhraní hlavní Aktivity (hlavního okna) budoucí aplikace.
  • mipmap/ - Obsahuje ikony aplikace, které jsou stejně jako ve složce drawable/ rozděleny do několika alternativních typů podle různých parametrů displejů různých zařízení (mipmap-hdpi/, mipmap-mdpi/, mipmap-xhdpi/, mipmap-xxhdpi/, mipmap-xxxhdpi/).
    • values/ - Do této složky ukládáme soubory XML, které definují jednoduché hodnoty, jako jsou řetězce, pole, celá čísla, rozměry, barvy, styly atd.. Na ně poté odkazujeme z kódu aplikace nebo z XML návrhu uživatelského rozhraní.

activity_main.xml

Okno je tedy definované v souboru res/layout/activity_main.xml. V tomto rozvržení se nachází jeden TextView zobrazující text "Hello World!" TextView je, jak název napovídá, komponenta pro zobrazení textu.

strings.xml

V activity_main.xml je komponentě TextView text nastaven tímto řádkem:

android:text="@string/hello_world"

Všimněte si, že text "Hello World!" zde není zapsán přímo, ale jako odkaz @string, který vede na soubor res/strings.xml. Teprve zde je definováno jaký text má řetězec hello_world. Proč texty do okna vkládáme tak složitě? Odpověď je jednoduchá - když se v budoucnu rozhodneme naši aplikaci přeložit do jiného jazyka, jen odkážeme na jiný soubor s texty a nebudeme muset celou aplikaci přepisovat. Proto se tohoto standardního způsobu budeme držet a všechny texty aplikace budeme mít na jednom místě, v souboru res/strings.xml.

Pokud se podíváme do onoho souboru res/strings.xml, najdeme zde řádek:

<string name="hello_world">Hello World!</string>

Hodnota řetězce s názvem hello_world je tedy "Hello world!";

Pro přeložení aplikace do jiného jazyka by pak stačilo přidat složku values-cs/ a do ní překopírovat strings.xml. V něm bychom přepsali jednotlivé texty do češtiny (zde na hodnotu "Ahoj Světe!"). Aplikace při spuštění na zařízení, které je v jazyce čeština, potom bude tahat hodnoty pro jednotlivé stringy z právě nově vytvořeného souboru.

AndroidManifest.xml

Jako poslední a nejdůležitější soubor zde máme manifest. Ten se musí nacházet v kořenovém adresáři každé aplikace a obsahuje informace o naší aplikaci, které předá Androidu ještě předtím, než ji spustí. Manifest je tedy vstupním bodem do každé aplikace.

Nachází se zde jednotlivé aktivity a jejich nastavení, práva aplikace, ikona atd. Veškerá oprávnění, např. k přístupu na internet nebo oprávnění k obrázkům galerie, která aplikace požaduje od uživatele povolit, jsou vývojářem definována právě v souboru AndroidManifest.xml. Dále můžeme v manifestu specifikovat požadavky aplikace na hardware zařízení. Pokud vytvoříme aplikaci, která vyžaduje (deklarací v manifestu), aby zařízení mělo fotoaparát, nebude uživateli v obchodě Google Play tato aplikace zobrazena, pokud jeho zařízení není fotoaparátem vybaveno. Z počátku tento soubor upravovat nemusíme.

Nyní již známe vše potřebné k tomu, abychom zkusili naši první aplikaci Hello World! spustit.

V příští lekci, Android programování - Spuštění aplikace (zařízení/emulátor), připravíme reálné zařízení s Androidem ke spuštění kalkulačky a také si vytvoříme virtuální zařízení v emulátoru.


 

Předchozí článek
Android programování - Vývojové prostředí
Všechny články v sekci
Základy vývoje Android aplikací v Javě
Článek pro vás napsal Jiří Frank
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Autor se věnuje programování v C# a vývoji aplikací pro platformu Android a dalším věcem spojeným s Android OS
Aktivity (4)

 

 

Komentáře

Avatar
Marek Halčin:21. května 11:21

A čo keď mi v složke app neukazuje build/, libs/, src/ ? Len mi to ukazuje libs/ a src/

 
Odpovědět
21. května 11:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.