26. Jul 2021Android

Základné layouty (rozloženie) v Android aplikáciách

Každý prvok na displeji telefonu má určitu vzťahovú poziciu voči svojmu okoliu. Na rozmiestnenie prvkov nám slúžia zoskupenia a ich kombinácia. Dočítate sa o najčastejšie používaných zoskupení pri vývoji Android aplikacií.

Tomáš ParonaiAndroid Developer

Linear Layout

LinearLayout je jedným z najčastejšie používaných zoskupení. Tento kontajner, umiestňuje obsah jeden vedľa druhého horizontálne alebo pod sebou vertikálne. Pri deklarovaní v XML je potrebné uviesť akú má mať orientáciu: android:orientation, možné parametre sú vertical alebo horizontal.

Ukážka Liner Layout rozloženia

Relative Layout

RelativeLayout rozmiestňuje obsah relatívne k súrodencom. Napríklad si vieme zadefinovať, že nadpis je pod obrázkom a zároveň fixne napravo k rodičovi. Kedy je správne použiť RelativeLayout? Keby sme mali viacero vnorených lineárnych zoskupení, vieme to nahradiť jedným relatívnym.

Ukážka Relative Layout rozloženia

Constraint Layout

ConstrainLayout je často používané zoskupenie, ktoré je podobné RelativeLayout. Všetok jeho obsah musí mať definovanú vzťahovú pozíciu voči svojím súrodencom alebo rodičovi. Pomocou ConstrainLayout-u vieme zadefinovať komplexné užívateľské rozhranie bez použitia viacej vnorených zoskupení. Okrem "flat" hierarchií vieme pokryť definíciu rozhrania aj pre väčšie či menšie zariadenia v jednom layout súbore.

Ukážka Constraint Layout rozloženia

Motion Layout

MotionLayout je rozšírenie ConstraintLayout. Pomocou tohto zoskupenia, vieme definovať animácie view komponentov na obrazovke. Chceme aby sa text vysunul zo spodnej časti displeja na stred pri stlačení tlačidla? Nie je problem, stačí si len zadefinovať počiatočnú a koncovú vzťahovú pozíciu textu. Spúšťanie animácie vieme zadefinovať na stlačenie tlačidla alebo ju vieme spustiť aj v kóde podľa vlastnej logiky. Nepotrebujeme prepočítavať a vytvárať komplikované animácie v kóde. Všetko za nás už spraví MotionLayout.

Frame Layout

FrameLayout je najjednoduchšie zoskupenie obsahu. Nemá žiadne špeciálne vlastnosti ako RelativeLayout alebo ConstraintLayout. Umiestňuje obsah na seba.

Ukážka Frame Layout rozloženia

ScrollView

ScrollView je zoskupenie, do ktorého vieme dať len jeden view alebo vnorené zoskupenie. Slúži nám na to, ak máme nescrolovateľné užívateľské rozhranie, napríklad menu s úvodným obrázkom a textami umiestnené pod sebou, nemusí sa nám zmestiť na displej, ale keď do menu, vložíme do ScrollView, vieme ho scrolovať ak potrebujeme.

WebView

WebView je špeciálne zoskupenie, do ktorého nevkladáme žiadne Android view komponenty. Načítavame v ňom webové stránky. Potrebujete načítať Google v aplikácii? Stačí v kóde zavolať webview.loadUrl("www.google.com").

Ukážka WebView zoskupenia

ListView

ListView svojím zoskupením pripomína LinearLayout. Ak by ste si do LinearLayoutu umiestnili viac obsahu, ako displej dokáže zobraziť, nevedeli by ste sa naň prescrolovať. Samozrejme, mohli by sme umiestniť LinearLayout do ScrollView, ale v prípade, že chceme zobraziť dynamické dáta, vkladať obsah do LinearLayoutu je prácne. Na tento účel nám slúži Adapter. Adapter je rozhranie, s ktorým ListView pracuje. Vkladanie dynamického obsahu do scrolovatelného zoznamu už za nás vyriešili vývojári Android SDK.

Ukážka List View zoskupenia

RecyclerView

RecyclerView je skoro to isté ako ListView. Jeden zásadný rozdiel medzi ListView a RecyclerView je rýchlosť. Predstavte si, že máte zoznam 100 používateľov, ktorých chcete zobraziť v zozname. Ak by ste použili ListView, Android vám ich vykreslí všetkých 100. Aj tých, ktorý nie sú viditeľný na obrazovke. Vykresli cháp, že sa alokuje pamäť a zaťaží sa procesor vytváraním views pre každého užívateľa. Pri veľkom počte dát je táto záťaž pozorovateľná počas používania aplikácie. RecyclerView nám vykresľuje len tých používateľov, ktorí sú viditeľní na obrazovke. Ak začneme scrolovať, tak sa viditeľné views použijú znova na nové dáta (preto ten názov zoskupenia). Android už nemusí na novo vytvárať view na zobrazenie, vykreslí ich len toľko, koľko ich vie zobraziť na obrazovke.

Tomáš ParonaiAndroid Developer