Naučte sa vyvíjať aplikácie pre Android za 14 dní – zorientujte sa v projekte aplikácie

0

Na rozdiel od príkladu v prvej kapitole, ktorého cieľom bolo najrýchlejšie vytvoriť fungujúcu aplikáciu, aby bolo možné overiť správnosť nainštalovania a nakonfigurovania vývojového prostredia, cieľom tototo projektu je detailne „pitvať“ jeho anatómiu, to znamená, že popíšeme význam jednotlivých súborov, ktoré projekt tvoria. Je to dôležité nielen pre začiatočníkov, ale aj pre vývojárov migrujúcich z iných platforiem. Zároveň ukážeme základné princípy vizuálneho návrhu používateľského rozhrania aplikácie. 

Aktivita ako základ Android aplikácie

Na to aby ste vytvorili úspešnú Android aplikáciu nepotrebujete podrobne poznať architektúru tejto platformy, avšak potrebujete základné informácie o objekte Aktivita (v orig. terminológii Activity). S týmto pojmom sa stretnete pri vytváraní projektu, keď si potrebujete zvoliť typ aktivity.

Aktivita je hlavná trieda, ktorá sa používateľom zobrazí  po spustení aplikácie. Aplikácia môže pozostávať z viacerých aktivít, ktoré si navzájom odovzdávajú údaje. Aktivity umožňujú používateľom cez grafické rozhranie (GUI) prijímať informácie od aplikácie a ovládať ju. Cez aktivitu sa spravidla implementuje viac, alebo menej komplexná čiastková úloha, ktorú má používateľ realizovať, napríklad vyplniť formulár, nastaviť parametre, vybrať si položku zo zoznamu a podobne. Trieda Activity je predurčená k tomu, aby zobrazovala používateľské rozhranie a zachytávala interakcie používateľa cez toto rozhranie. Aktivita by mala byť navrhnutá tak, aby umožnila používateľovi sústrediť sa na jednu vec, ktorú momentálne potrebuje realizovať, napríklad napísať a poslať textovú správu, zadať kontaktné údaje a podobne.

Vytvorenie projektu

V tomto projekte využijeme šablónu hlavnej aktivity typu Empty Activity, čiže sa vytvorí prázdny formulár bez navigačných prvkov, aby sme v projekte mali len jednu aktivitu. V ďalších dieloch seriálu budeme vytvárať aj aplikácie s iným typom hlavnej aktivity. V ponuke sú

  • Basic Activity – ako voliteľný prvok navigácie sa používa navigačná lišta ActionBar s ovládacími prvkami
  • Fullscreen Activity – využíva celú veľkosť obrazovky
  • Google Maps Activity – šablóna aktivity s využitím mapovej služby Google Maps
  • Master/Detail Flow – hodí sa pre zoznamy objektov typu master – detail. Zobrazovacia plocha je rozdelená na dva stĺpce. V ľavom stĺpci je zoznam objektov a v pravom stĺpci sú zobrazené detaily viažuce sa k vybranému objektu.
  • Navigation Drawer Activity – aktivita využívajúca Navigation Drawer
  • Scrolling Activity – aktivita pre obrazovky ktoré sú len výrezom z väčšej virtuálnej plochy
  • Tabbed Activity – aktivita typu Blank Activity s možnosťou prepínania zložiek gestom vodorovného posunu

Všimnite si v záhlaví dialógu na výber aktivity, že aplikácie je možné vyvíjať pre niekoľko konštrukčných foriem zariadení. Pozrite si pre zaujímavosť aké šablóny aktivít sú v týchto záložkách. My ponecháme implicitne vybranú záložku Phone and Tablet

V druhom dialógu na vytvorenie projektu sú tri editačné polia pre zadávanie názvu:

Application Name – názov zadaný do tohto poľa sa bude zobrazovať pri spúšťaní aplikácie. Po zadaní názvu aplikácie do poľa Application Name sa v poli Project Location  zobrazí rovnaký názov súboru s vynechanými medzerami

Package Name – do tohto poľa sa zadáva názov balíčka, do ktorého bude projekt aplikácie pribalený. Názov balíčka musí byť jedinečný v rámci všetkých balíčkov nainštalovaných v systéme Android. Identifikuje vašu aplikáciu v aplikačnom systéme Androidu. Možno si položíte otázku, ako bol odvodený názov com.example.cvicnaaplikacia? Niečo vám to pripomína? Áno je to názov, ktorý začína s opačným názov domény, napríklad domény vašej firmy a podobne. Ak máte doménu napríklad www.supervyvojar.com, a názov vašej aplikácie bude GenialnyPomocnik, názov balíčka aplikácie v poli Package name bude com.supervyvojar.genialnypomocnik.  Ak plánujete aplikáciu publikovať na Google Play, nemôžete použiť implicitne nastavený namespace "com.example". Pre cvičný príklad však takýto namespace postačí.

Dôležitý je výber minimálnej verzie SDK- čiže na akej škále verzií operačného systému Android bude možné vašu aplikáciu spustiť. Aby aplikácia bežala na čo najviac smartfónoch, vybrali sme verziu Android 5.0 (Lollipop). V praxi to znamená, že aplikácia nebude využívať žiadnu funkcionalitu z novších verzií. 

Aktuálne nastavená verzia sa dá kedykoľvek zmeniť cez kontextové menu projektu - pravé tlačidlo myši na názov projektu Properties -> Android.

Language – Môžete si vybrať programovací jazyk Java, alebo Kotlin. Budeme trochu konzervatívni a v tomto seriáli budeme využívať Javu. Okrem iného aj pre veľkú podobnosť s programovacím jazykom C#

Po spustení aplikácie bude zobrazená hlavná aktivita. Budú otvorené dve okná, jedno s aplikačným kódom a druhé s návrhovým zobrazením používateľského rozhrania hlavnej aktivity activity_main.xml 

Všimnite si, že projekt pozostáva z niekoľkých zložiek

  • java -  v zložke sa nachádzajú súbory s kódom tried v programovacom jazyku Java
  • res – v zložke sa nachádzajú XML súbory s definíciou používateľského rozhrania.
  • manifestst -  aplikačný manifest obsahujúci dôležité informácie o projekte
  • Gradle scripts – skripty pre kompilátor Gradle. Každý modul má svoj súbor build.gradle

Jednoduchý vizuálny návrh používateľského rozhrania

Skôr, než začneme „pitvať“ anatómiu projektu aplikácie v Android Studiu, ukážeme základné princípy vizuálneho návrhu používateľského rozhrania. Požadovaný prvok jednoducho presuňte z okna Palette na požadované miesto. Komponenty používateľského rozhrania môžu byť tiež pridané výberom požadovaného objektu z palety a následným kliknutím na miesto, kde má byť prvok vložený. Presuňte zo zložky Palette na plochu vašej aplikácie prvok TextView. Predpokladajme, že to bude statický text Krokom ktorý bude logicky nasledovať bude zmena implicitného textového reťazca, ktorý korešponduje s názvom prvku teda „TextView“ na požadovaný text, v našom prípade napríklad „Textový reťazec“. Keď zadaný textový reťazec potvrdíte, zobrazí sa vpravo do prvku ikona výstrahy, ktorá indikuje potenciálny problém. Ak na túto ikonku kliknete, dostanete popis problému a návrh riešení. Android Studio vás upozorňuje, že pre prvok ste nezadefinovali jeho polohu. Vy ste ho síce niekam na plochu používateľského rozhrania aplikácie umiestnili, ale v Androide až na výnimky nemajú prvky používateľského rozhrania pevné miesto, ale rozmiestňujú sa flexibilne, podľa toho aké je rozlíšenie displeja, podľa orientácie, prípadne či má aplikácia k dispozícii celý displej, alebo v multitaskingu len jeho časť 

Situáciu vyriešime v cvičnej aplikácii tak, že v pravom okne Constraint Widget kliknete na ľavú a hornú ikonku „+“, čím definujete vzdialenosť od ľavého a horného okraja displeja. 

Ešte stále tam zostalo upozornenie, že by ste nemali zadávať texty ako konštanty priamo do definícií prvkov, pretože by ste v budúcnosti ak vaša aplikácia bude úspešná mohli mať problémy s lokalizáciou používateľského rozhrania do iných jazykov. Preto by všetky texty a podobne hodnoty mali byť uložené ako resource. Potom nebude s lokalizáciou vašej aplikácie žiadny problém a bude sa dať urobiť bez akéhokoľvek zásahu do kódu aplikácie. V tomto prípade je riešením možnosť Extract string resource, ktorú vám ponúkne vývojové prostredie. 

Zadajte názov resource, napríklad popis a potvrdte. Definícia sa uloží do súboru strings.xml. Výhody takéhoto sústredenia textových reťazcov pri prípadnej lokalizácii aplikácie ani nemusíme zdôrazňovať. Vráťme sa k návrhu hlavnej aktivity. Pomocou ikoniek vpravo hore sa môžete prepnúť do návrhového zobrazenia, alebo si môžete nechať zobraziť XML kód., prípadne si môžete nechať zobrazené obidva okná

Definícia používateľského rozhrania je v  súboroch v zložke /res/layout/. V súbore activity_main.xml je textová reprezentácia návrhu používateľského rozhrania aktivity. XML dokument má jeden koreňový element, v tomto prípade  ConstraintLayout  do ktorého sa postupne vnárajú prípadné ďalšie layouty a v nich  prvky v originálnej terminológii Views, ktoré tvoria používateľské rozhranie aplikácie. 

Význam tohto kódu najlepšie pochopíte, ak prepnete vývojové prostredie do režimu zobrazenia grafického návrhu. Návrh používateľského rozhrania môžete robiť buď pomocou vizuálneho návrhu, alebo priamym písaním XML kódu definície používateľského rozhrania. Záleží len na vás pre ktorý spôsob sa v ktorej konkrétnej situácii rozhodnete. Návrhu používateľského rozhrania sa budú venovať ďalšie diely

Aplikačný kód

Kód hlavnej aktivity je v súbore MainActivity.java.

package com.example.cvicnaaplikacia;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

Metóda OnCreate () je volaná operačným systémom pri vstupe do aktivity, takže v tejto metóde sa spravidla vykonáva  inicializácia používateľského rozhrania. 

Definovanie objektov v zdrojoch (resources)

V aplikáciách sa využíva množstvo definícií objektov. Typickým príkladom sú textové reťazce, definície farieb, tvarov a podobne. Pre ukladanie definícií slúži adresár zdrojov /res

V zložke res sú definície rôznych objektov, v závislosti od charakteru aplikácie. Najčastejšie sa v tejto zložke nájdete vnorené podzložky:

  • Layout – definícia rozmiestnenia prvkov používateľského rozhrania
  • Menu – definícia štruktúry menu
  • Strings – definície textových reťazcov
  • Colors – definície fasrieb použitých v aplikácii
  • Dimens – rozmery v jednotkách dip (density independent pixel)
  • Drawable – definícia obrázkov (.png, .jpg, .gif) a tvarov pre vykresľovanie
  • Styles – definícia štýlov pre prvky používateľského rozhrania

Predovšetkým z dôvodu jednoduchej lokalizácie do iných jazykov odporúčam všetky textové reťazce umiestniť do súboru strings.xml. V návrhovom xml kóde, java kóde a manifeste na tieto reťazce budete len odkazovať. V  seriáli  toto pravidlo občas v cvičných aplikáciách pre názornosť a skrátenie výpisov porušíme. 

Textové reťazce sú jedným zo základných stavebných kameňov používateľského rozhrania. Vyskytujú sa v mnohých widgetoch, napríklad Button, EditText... Môžete definovať samostatné textové reťazce, prípadne polia reťazcov. V aplikáciách často potrebujete nejakým spôsobom zvýrazniť časť textu. Pre formátovanie sa využívajú tagy známe z HTML kódu.​ Pre úvodzovky a apostrofy sa využívajú takzvané Escape sekvencie začínajúce obráteným lomítkom.

Aplikačný manifest

V zoznamovaní sa s anatómiou projektu Android aplikácie pokračujeme preskúmaním aplikačného manifestu. Je to hlavný konfiguračný súbor pre aplikáciu. Definuje jednotlivé komponenty, nastavenia konfigurácie a oprávnenia aplikácie. Aplikačný manifest nájdete v súbore AndroidManifest.xml v  zložke Manifests. Môžete si ho zobraziť ako XML dokument, alebo v hierarchickom zobrazení. 

V elemente activity je zoznam všetkých aktivít aplikácie.

Pozornosť venujte aj sekcii intent-filter. Intent je definovaný ako abstrakcia operácie, ktorú je potrebné vykonať, alebo inými slovami definuje presuny medzi aktivitami. Pomocou intentov je možné prepojiť nielen aktivity aplikácie, ale aj aktivity viacerých aplikácií. Aplikácia, ktorá chce aktivovať nejakú Activity, zavolá metódu startActivity(), kde požiadavka je presnejšie špecifikovaná pomocou parametra. Následne systém vyberie objekt Activity, ktorý najviac vyhovuje špecifikácii. 

Identifikačná grafika aplikácie

Každá aplikácia obsahuje určité množstvo grafických prvkov, definícií ikon, obrázkov a iných typov grafiky, ktorá dotvára dizajn aplikácie. Tieto grafické prvky aplikácie sú definované v zložke projektu app -> res -> mipmap . Napríklad v zložke ic_launcher.png je 5 rovnakých obrázkov avšak rôzne veľkých obsahujúcich ikonu aplikácie. Dialóg Image aAssets pomocou ktorého môžete tieto prvky spravovať zobrazíte v kontextovom menu zložky app (app -> New -> ImageAsset).

Všimnite si, že ikona je definovaná vo viacerých veľkostiach.

Prehľad dielov seriálu

1 deň – Prvá aplikácia 

2 deň – Možnosti emulátorov 

Luboslav Lacko

Všetky autorove články
Vývoj Android Android Android Studio

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať