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á.
To 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...
No, 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.
Generovany 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.
Jsem 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.
Tak 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).
spravne, 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.
Př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é.
A 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ů.
Dle 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.
Lahkost 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 ...
To XML je hierarchické. Takže ať už to kdokoliv naprasí jakkoliv, tak vždycky na první pohled alespoň uvidím, co je na čem. Stejně tak vlastnosti prvku uprostřed nemůžu nenastavit v XML na konci, apod. Obfuskovat kód je mnohem snazší než obfuskovat XML.
Dí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. informací o programování Androidu není nikdy dost:
Dovedu si představit situaci, kdy váš výrok neplatí ;-)