Kdybych o programování pro Android nic nevěděl, tak bych si po přečtení článku myslel, že pro Android se GUI MUSÍ programovat v xml. Abych pravdu řekl, po zběžném a lehce nepozorném přečtení částí originální dokumentace (kde se to xml maximálně a až přehnaně propaguje) může mít čtenář tentýž (mylný) dojem. Ale je to samozřejmě nesmysl, GUI jde i na Androidu dělat normálně v kódu, jakkoli je v normálních případech to xml doporučované. Autor by to měl v článku jasně říci, takhle to dost mate. Programátor pro Android musí umět oba dva styly, to, co jde, je jednodušší udělat v xml, ale třeba nějaké dostatečně dynamické GUI, např. pokud programuje vlastní www prohlížeč a jeho zobrazování webových formulářů, ve statickém xml samozřejmě neudělá.
Názory k článku
Programování pro Android: začátky s UI
Re: matení
celé vláknoTo mas jak C# a WPF formulare. To take vypada, ze se to musi delat v XML i kdyz to lze i kodem.
Autor ma pravdu, ze zaklad je toto. A perlicky jako www prohlizec atd. se pak douci pozdej. Navyk by mel ziskat prevazne tim zakladem.
Vse je to o tom, ze XML je nove styl a pokud zacinam naucim se to moderni a kaslu na to, ze lide jako vy nebo ja co uz umi stare budou tvrdit, ze bez toho to nelze, to bysme byli jinak jeste u Assembleru...
Re: matení
celé vláknoNo, nové a moderní... delphi tenhle styl používají už spoustu let (a třeba glade taky). Zato když jsem nakreslil okno v netbeansech a ono to vygenerovalo zdroják vytvářející okno sérií příkazů, tak jsem myslel že spadnu pod stůl.
Re: matení
celé vláknoGenerovany java kod nie je na skodu, ked chce clovek robit aplikaciu, kde su zlozitejsie interakcie medzi prvkami gui. Gui-cko si naklikam v netbeans, doplnim tam nejake getre a setre + objekt co mi sprostredkuva interakcie (mediator). A mozem s tym robit vseliake psie kusy.
Re: matení
celé vláknoJsem ten pripad, ktery kroutil po precteni hlavou a rikal si: "Proboha a jak v tom nekdo udela dynamicke UI ?" Takze za me: diky za clanek a moc diky i za Tvuj prispevek Honzo.
Re: matení
celé vláknoTak to víte že to GUI jde udělat i programově, však to xml musí "něco" vzít, rozparsovat ho a "nějakými funkcemi" nakreslit. Takže když toto umí to "něco", tak musí být možnost tyto "nějaké funkce" volat ve vlastním kódu :-)
Ale jinak to slavné xml je jediná věc, která mi trošku vadí a (zatím) mi brání si alespoň trošku něco naprgat pro Androida (jen tak pro radost a pro pokus), a dále dokumentace k SDK API taky není nijak slavná, co je mi platné, když u metody xxx třídy aaa napíšou, že dělá zzz, ale neškodily by tam mít nějaký alespoň základní příklad (pár jich sice je, ale nepokrývají vše).
Re: matení
celé vláknospravne, pokud program ma byt slozitejsi nez vypisovani aktualni teploty, doporucil bych dat vse do kodu, usetri se tak spousta prace s idiotskym XML pseudo-kodem.
Re: matení
celé vláknoPřesně tak. Abych si ušetřil psaní 100 řádků "idotského XML pseudo-kódu" musím napsat 500 řádků "nádherně přehledného java kódu", který dělá přesně to samé.
Re: matení
celé vláknoA ten složitější program budete testovat jak? Ten idiotský pseudokód v XML (Android) nebo XAML (C# + WPF) lehce zajistí, že veřejné metody modelu = API a můžu je jednoduše testovat unit testy na pár řádků.
XML bych nezavrhoval
celé vláknoDle mého názoru se XML daleko lépe čte, a když si UI rozdělíte ještě na samostatné bloky, které pak poskládáte přes include a používáte styly, tak je rozhodně pohodlnější takové UI udržovat.
Když chci custom kontrolku, udělám si stejně layout v XML, a pak to kódem jenom oživím, aby měla to správné chování.
Pak se to dá opět vložit do XML layoutu a funguje to opravdu dobře a přehledně:
<com.mypackage.MyCustomControl android:id=...
...
/>
Samozřejmě můžu nějaké věci generovat dynamicky, ale i tam si můžu například položku inflatnout z XML, naplnit daty a přidat kódem do UI.
Re: XML bych nezavrhoval
celé vláknoLahkost citania XML vs kod je vzdy len o tom ako je to napisane. Ked dostanete na refactoring kod po nejakom prasati, tak vam nepomoze nic. A verte, ze som videl xml pre android, ktore bolo takze, ze v prvom momentne ma to rozlutostilo tak, ze sa mi slzy nahrnuli do oci :) ... na druhej strane videl som zrovna tak pekne napisane UI v kode ...
Jde to ještě jinak
celé vláknoDíky za článek, informací o programování Androidu není nikdy dost. Taky myslím, že by bylo dobré zmínit, že UI se dá tvořit i pomocí Java kódu, protože to je vlastně přesně co Inflater dělá s tou XML definicí.
Ale chtěl bych zmínit - snad to nebude vnímano jako přílišná reklama, i když to vlastě reklama je - že existuje ještě třetí cesta, tj. psát deklarativně v Javě a UI tvořit během runtime pomocí reflection. Koho by toto zajímalo, může si zkusit najít můj framework ObjectForms (když už tu nesmí být odkazy, i když doufám, že tohle je opravdu spíš k tématu, tak věřím, že to nebude vnímane negativně).
Re: Jde to ještě jinak
celé vláknoRE. informací o programování Androidu není nikdy dost:
Dovedu si představit situaci, kdy váš výrok neplatí ;-)
Re: Jde to ještě jinak
celé vláknoProboha - ono opravdu existuje ještě něco ošklivějšího než GUI tvořené programátorem - totiž autogenerované GUI. Díky za rozšíření obzorů.

