Kotlin -> XML/React czy coś innego?

0

Hej,
zastanawiam się czy istnieje możliwość połączenia w aplikacji na androida Kotlina z reactem albo czymś innym do robienia widoków?

0

react native?

0

Ale co chciałbyś łączyć i jak? Chciałbyś pisać aplikację React Native w Kotlinie? Aplikację natywną w Kotlinie z elementami React Native?

0

A to Kotlin na Androida nie ma już biblioteki do robienia widoków?

0
Michał Sikora napisał(a):

Ale co chciałbyś łączyć i jak? Chciałbyś pisać aplikację React Native w Kotlinie? Aplikację natywną w Kotlinie z elementami React Native?

Chciałbym pisac logikę aplikacji w Kotlinie, a widoki w czymś przyjemniejszym niż XML. Szukam alternatywy dla XML.
Korzystam w tej chwili z XML'a, ale to co tworze wygląda strasznie topornie. Nie wiem czy to dobre określenie na to czego szukam, ale frameworka do kotlina który pozwoli na łatwe tworzenie nowoczesnego UI.

1

Co to znaczy topornie? Pokaż tego xmla. Świat Androida używa xmla od lat i jest ok. Ładny UI nie powstaje w fajnych frameworkach.... Trzeba go po prostu usiąść i zaimplementować.

1

W teorii możesz połączyć frontend RN z Kotlinem. W praktyce myślę, że wyszłaby z tego kaszana. XML póki co jest niestety Twoim najlepszym przyjacielem.

Możesz spróbować bardziej deklaratywnych alternatyw w stylu Litho, Contour albo Compose, ale nie jest to coś, co bym komuś proponował jako zastępstwo XMLa. Litho całkowicie odcina się od natywnych widoków na Androidzie. Contour jest raczej specjalistycznym narzędziem do rozwiązywania konkretnych zadań a nie czymś, co całkowicie ma zastąpić XMLa (chociaż w teorii może). Compose jest całkowicie w powijakach i obecnie raczej eksperymentalny.

0

Ok, czyli zostaje mi XML. Muszę się tego w takim razie nauczyć, macie może do polecenia jakieś artykuły/tutoriale jak robić UI?

2

Najszerszy opis znajdziesz w dokumentacji - https://developer.android.com/guide/topics/ui/declaring-layout. Jest jednak problem, że jest tam trochę nieużytecznych informacji. Dzisiaj już nikt nie powinien stosować RelativeLayout, ListView czy GridView.

Layouty które powinieneś umieć to przede wszystkim FrameLayout, LinearLayout i ConstraintLayout. Pierwsze dwa są proste w użyciu. Ostatni jest dużo bardziej skomplikowany, ale daje najwięcej możliwości. Osobiście uważam, że jest intuicyjny, ale często słyszę opinię, że ludzie nie do końca wiedzą jak z niego korzystać w 100%. Do tego polecam stronę https://constraintlayout.com. Jest też cała seria artykułów na Medium - https://medium.com/androiddev[...]raint-layout-1-1-d07fc02406bc.

Kolejny ważny element to wyświetlanie wielu rzeczy o takiej samej strukturze w liście albo na siatce. Do tego powinien być użyty RecyclerView. Zapomnij o ListView i GridView. Serio. Materiałów jest dużo, ale różnej jakości. Zazwyczaj kiepskiej. Nie wiem nawet, co miałbym tutaj polecić. Możesz zacząć od oficjalnej dokumentacji, ale jest po pierwsze przestarzała a po drugie taka sobie. Dużo tematów o RecyclerView przewijało się tutaj na forum, więc możesz w nich poszukać jakichś informacji.

Ostatnia sprawa to odpowiednie stylowanie widoków. Tu jest ogrom pofragmentowanych inforamcji, ale widzę, że Google stara się to jakoś obecnie naprawić. Zaczęli nawet pisać serię artykułów na ten temat, które są sensowne.

https://medium.com/androiddev[...]themes-vs-styles-ebe05f917578
https://medium.com/androiddev[...]theme-attributes-8f7c50c9eaba
https://medium.com/androiddev[...]theme-attributes-412caa748774
https://medium.com/androiddev[...]g-themes-overlay-1ffd57745207

Temat jest szeroki. Są jeszcze takie rzeczy jak grafika wektorowa, animacje (i tu jest kilka różnych sposobów animowania elementów UI), przejścia między ekranami, MotionLayout, własne widoki składające się z innych widoków, własne widoki rysowane samemu bezpośrednio operacjami na Canvas. Od siebie mogę polecić ludzi znających się na tych tematach i ich artykuły albo prezentacje - Nick Butcher, Chris Banes, Alex Lockwood, Ryan Harther, Huyen Tue Dao, Chet Haase, Yigit Boyar, Cyril Mottier, Nicolas Roard.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0