26. Jul 2021
AndroidZá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í.
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.
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.
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.
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.
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").
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.
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.