MojAndroid

Začiatkom mesiaca sme si v prvom dieli mini seriálu o tvorbe aplikácií pre tablety stručne vysvetlili základné princípy a fakty, ktoré treba zohľadniť pri dizajnovaní aplikácie pre tablety. Dnes sa pozrieme na spôsoby vytvorenia rôznych rozložení prvkov UI a použitie rôznych grafických zdrojov v závislosti na charakterstikách Android zariadenia.

Využitie alternatívnych zdrojov pre tablety

Rozloženie prvkov používateľského rozhrania na tablete je dôležitá, ale nie jediná vec, ktorú treba zohľadniť. Veľkosť a rozlíšenie jednotlivých grafických prvkov, veľkosť písma, veľkosti tlačidiel, a ďalšie aspekty sú rovnako dôležité faktory v dobrom dizajne používateľských rozhraní pre tablety.

Android má prepracovaný systém pre dynamické načítavanie zdrojov na základe dlhého zoznamu charakteristík zariadenia. Tieto kritériá sa premietajú do názvu adresárov (grafických) zdrojov. Možno poznáte kvalifikátory rozlíšenia ldpi, mdpi, a hdpi, pre ktoré sú automaticky vytvorené adresáre pri vytváraní Android projektu vo vývojovom prostredí Eclipse. Je toho však omnoho viac. Pri návrhu dizajnu pre tablety máte možnosť vytvorenia špecifických grafických zdrojov vďaka kvalifikátorom charakteristík zariadenia pre prispôsobenie aplikácií rôznym typom a veľkostiam tabletov.

Pozrime sa na príklad. Motorola Xoom má obrazovku s extra vysokým rozlíšením a strednou hustotou, zatiaľ čo Galaxy Tab má nižšie rozlíšenie, ale vyššiu hustotu. Väčšina telefónov má displej normálnej veľkosti so strednou alebo vysokou hustotou.

Rozloženie UI prvkov pre Xoom by sme teda uložili v priečinku s názvom layout-xlarge-mdpi kým rozloženie pre Galaxy Tab by bolo v adresári layout-large-hdpi. Nasledujúci obrázok zobrazuje tri rôzne main.xml súbory, z ktorých každý definuje používateľské rozhranie pre inú veľkosť displeja, a v pravej časti ukážku rozloženia tak ako by vyzeralo na xlarge-mdpi zariadení – teda v našom príklade Motorole Xoom.

Použitím týchto dvoch kvalifikátorov jednoducho oddelíte prostriedky použité Galaxy Tabom a Motorolou Xoom nielen od seba navzájom, ale zároveň aj od väčšiny dostupných telefónov. Táto technika sama môže byť použitá na vytvorenie rozdielnych dizajnov tej istej aplikácie pre rôzne zariadenia. Použite ju pre poskytovanie rôznych rozložení, rôznych obrázkov alebo rozmerov zdroje pre druhy zariadení, ktoré chcete vo vašej aplikácii podporovať.

Pozrime sa bližšie na grafické zdroje (obrázky, ikony) a rozmery. Na tablete bude vaša aplikácia pravdepodobne zobrazovať väčšie obrázky. Na druhej strane však chcete, aby niektoré prvky používateľského rozhrania, ako tlačidlá, boli väčšie ako na telefóne, ale nie zase príliš veľké. V niektorých prípadoch môžu mať tlačidlá na tablete aj menšie rozmery ako vo verzii pre smartfóny.

Pri vytváraní rôznych zdrojov (a najmä rozložení), majte na pamäti, že budú načítané v rámci rovnakej aktivity na všetkých zariadeniach. Vytvorenie diametrálne odlišných používateľských rozhraní pre rôzne obrazovky povedie ku komplexnejšiemu kódu a zložitejšiemu testovaniu výslednej aplikácie.

Pre úplnosť uvádzame niektoré ďalšie užitočné kvalifikátory pre prispôsobovanie aplikácií rôznym displejom:

  • orientácia: port – na výšku, land – na šírku.
  • pomer strán: long = širokouhlý displej, notlong = displej so štandardným pomerom strán. Všetky tablety a telefóny s vysokým rozlíšením majú v súčasnosti širokouhlú obrazovke, takže tento kvalifikátor sa používa len zriedkavo.
  • doky: car – v aute, desk – na stole.
  • verzia systému: V8, V9, V11, atď. (verzia podporovaného Android SDK).

Existuje ešte niekoľko ďalších, celý zoznam a podrobnejšie informáciesi môžete pozrieť v oficiálnej dokumentácií k OS Android.

Fragmenty: dizajn pre tablety a telefóny súčasne

Pozreli sme sa na niekoľko vecí, ktoré treba brať do úvahy pri vytváraní aplikácií pre tablety. Operačný systém Android však má zabudovaný dobrý systém pre vytváranie aplikácie, ktorá pobeží na takmer všetkých typoch zariadení. Prvý zo spôsobov, použitie rôznych zdrojov na základe kvalifikátorov, sme si už vysvetlili.

Android 3.0 a 3.1 však priniesol nový spôsob zvládania rozdielov v používateľskom rozhraní medzi rôznymi typmi obrazoviek. Tento nový mechanizmus sa nazýva fragmenty, ktoré sa dajú asi najlepšie opísať ako sub-činnosti. Fragmenty nie sú závislé na konkrétnej triede Activity, ale konkrétna inštancia fragmentu musí existovať v rámci nejakej aktivity.

Jedným z najbežnejších príkladov použitia fragmentov je klasicke rozloženie UI zoznam + panel s detailami, ktorý sme spomenuli v predošlom článku. Pri použití fragmentov je zo začiatku potrebná väčšia dávka konfigurácie, ale v konečnom dôsledku máte aplikáciu, ktorá sa ľahšie upravuje, a obsahuje menej kódu. V spomenutom príklade by fragmenty predstavovali zoznam položiek naľavo, a panel porobností napravo. Potom by ste už len zistili aká je veľkosť displeja, na ktorom je aplikácia spustená, a buď by ste fragmenty použili v jednej aktivite jeden vedľa druhého, alebo v dvoch rôznych aktivitách (na smartfónoch). Kód sprostredkujúci interakcie medzi týmito dvoma prvkami je však v obidvoch prípadoch rovnaký.

Je tu však jeden problém: fragmenty sú v súčasnosti k dispozícii len v Androide 3.0 a 3.1. To znamená, že ak chcete, aby vaša aplikácia fungovala aj na starších verziách, nevyhnete sa ďalšiemu nadbytočnému kódu. Google však oznámil, že pracujú na vytvorení statickej knižnice, ktorá by poskytla Fragment API aj pre staršie verzie Android SDK (od 1.6 vyššie). Po vydaní tejto knižnice budú môcť všetci ťažiť z výhod fragmentov na takmer každom existujúcom zariadení so systémom Android. Dovtedy si môžete zvoliť naprogramovanie inteligentného rozpoznávania verzie OS a písanie kódu pre každú zvlášť, alebo podporovať verziu 3+ a dúfať, že sľúbená knižnica od Googlu dorazí už čoskoro.

29.6.2011

Pravidlá diskusie

Portál MojAndroid.sk si vyhradzuje právo zmazať neslušné, rasistické a vulgárne príspevky, ako aj osobné útoky na redakciu, či diskutérov v komentároch pod článkom bez ďalšieho upozornenia. V prípade uverejňovania odkazov na externé stránky, je komentár automaticky preposlaný do redakcie na schválenie.

+