C/C++ week Anniversary - BF
80 % bodů zdarma na online výuku díky naší Narozeninové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

3. diel - Android programování - Android API a struktura projektu

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íjať nasledujúce firmy, ktoré možno hľadajú práve teba!

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.


 

 

Článok pre vás napísal Jiří Frank
Avatar
Ako sa ti páči článok?
Ešte nikto nehodnotil, buď prvý!
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
Všetky články v sekcii
Základy vývoje Android aplikací v Javě
Aktivity (4)

 

 

Komentáre

Avatar
Marek Halčin:21. mája 11:21

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

 
Odpovedať
21. mája 11:21
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 1 správy z 1.