• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LWEEKAndroid development
    Diskuse o vývoji aplikací pro platformu Android.
    -----------------
    Tipy, Triky, Postřehy, Začátečnický help, Nápady na nové aplikace.

    Oficiální developerská stránka: http://developer.android.com
    Něco málo v češtině na WiKi android fora: http://wiki.androidforum.cz/index.php/Programov%C3%A1n%C3%AD
    Článek na Zrojáku: http://zdrojak.root.cz/clanky/vyvoj-pro-android-ii/

    Docela zajímavé tutoriály přímo od vývojářů ze Sony Ericsson:

    na tvorbu vlastního View adapteru
    http://blogs.sonyericsson.com/developerworld/2010/05/20/android-tutorial-making-your-own-3d-list-part-1/

    zajímavý nápad na zoomování jedním prstem - aneb vytváření gest
    http://blogs.sonyericsson.com/developerworld/2010/05/18/android-one-finger-zoom-tutorial-part-1/
    rozbalit záhlaví
    DRIZDIK
    DRIZDIK --- ---
    SUK: Můýže to zabít, některé věci zase automaticky ožijou (sticky services), něco ani take (případ force-close) Většina těchhle synchronizací je buď schedulovaná(aby ti právě stále něco neběželo na pozadí) nebo pushovaná ze severu.
    SUK
    SUK --- ---
    DATEL, DRIZDIK: Chapu-li dobre, tak system si muze dovolit zabit cokoliv, nezavisle na uzivatelskem nastaveni, pokud to nezobrazuje notifikaci? Jak funguji treba synchronizace kalendare/kontaktu atd? Osobne s tim mam prave trosku problem, ze se mi nesyncuje kalendar (CalDAV) kdovijak casto.
    DRIZDIK
    DRIZDIK --- ---
    DATEL: Nemusí .. je známej případ kdy ty systémy občas dělali force-stop, což ti nedovolí té appce znovu najet. S foreground servicem musíš stále zobrazovat notifikaci. Druhá možno je kombinace backgroundu a workmanageru, který by měl naplánované pingání.
    DATEL
    DATEL --- ---
    DATEL: ještě doplním dotaz, zda foreground service přežije i úpravy výrobců vlastních nadstaveb s různými "save battery" a optimalizacemi.
    DATEL
    DATEL --- ---
    Ahoj, řešil jste někdo jak zabezpečit, aby aplikace zůstala živá a systém ji nesejmul při první příležitosti - obzvlášť Android 8, 9 a 10. Stačí teoreticky foreground service, která bude pingat na server (aplikace má primárně spojení s aplikačním serverem)? Nebo případně přidat Alarm / Job? Nesmí být závislé na GMS / Firebase Messages (tj. že by server posílal notifikace, kterou by zobrazil systém, když by app byla zrovna stopnutá). Díky za tipy.
    LWEEK
    LWEEK --- ---
    Mimochodem, je možnost nějak observovat jestli window pannuje? Totiž mám průhledný status bar a potřeboval bych změnit jeho barvu během pannigu.
    LWEEK
    LWEEK --- ---
    Nakonec jsem to vyřešil tak, že jsem do manifestu vložil: android:windowSoftInputMode="adjustPan". Díky za tipy.

    Asi to je fakt. Záleží na co je člověk zvyklý. Já řeším problémy v iOSu úplně bez větších potíží a jsem na to zvyklý a mám to rád. V Androidu asi narážím, protože ta platforma je prostě namyšlená jinak. Každá platforma má asi své plusy a mínusy.
    JOHNY_G
    JOHNY_G --- ---
    U notche ještě nezapomeň na windowTranslucentStatus (true) a statusBarColor (transparent) v android:theme, pokud kolem něj chceš kreslit.
    JOHNY_G
    JOHNY_G --- ---
    LWEEK: Tohle je problém vývojářů, kteří nejsou sžití s cílovou platformou. Zcela nesprávně očekáváš iOSové chování a snažíš se aplikovat iOSové postupy na prostředí jiného systému. Je tu strašně moc proměnných na to, abych ti poradil konkrétní řešení. Možná by stačilo mít BottomNavigationView v aktivitě a obsah ve fragmentu, a korektně pracovat s gravity vs. layout_alignParentBottom/layout_constraintBottom_toBottomOf a windowSoftInputMode. Možná by stačil windowSoftInputMode s jinou strukturou layoutu. Možná, že by se na to dal použít CoordinatorLayout s příslušným layout_behavior. Těžko říct zpatra, bude to chtít trochu experimentování :-).

    LWEEK: Notch se na Androidu handluje přes fitsSystemWindows a WindowInsets (resp. WindowInsetsCompat, pokud si chceš ušetřit bolehlav). Ve většině případů funguje fitsSystemWindows naprosto automaticky (když ho pochopíš), někdy ale musíš něco ručně postrčit přes inset.

    No a kdybys trval na jablečném přístupu, můžeš, tuším, WindowInsets (nebo úplně na surovo ViewTreeObserver) použít právě i na to skrývání bottom baru. Jeden z mnoha přístupů řeší třeba tento článek (jeho prioritou jsou animace, ale tento problém adresuje): https://proandroiddev.com/animating-keyboard-appearance-in-android-application-425a2a26de9a
    TOOMIX
    TOOMIX --- ---
    Děláme pro Android a iOS v Xamarin.Forms s komponentama od Syncfusion a na iOS se toho moc pozitivního říct nedá, samý klacky pod nohy, ale každá ta platforma má svoje plusy a mínusy
    STARF
    STARF --- ---
    a jestli to ma byt bez skakani, tak bych pouzil scrollTo()
    ale nejaky maly "glitch" tam asi vzdy bude, vic se mi libi smoothScrollTo()
    STARF
    STARF --- ---
    LWEEK: Mas v AndroidManifest u tagu activity pridano android:windowSoftInputMode="adjustResize" ?
    Ve fragment XML potom je nutne u nestovaneho view pridat android:layout_alignParentBottom="true". A v tride mScrollView.post { mScrollView.smoothScrollTo(0, saveButton.y.toInt()) }.
    pozn.: saveButton je posledni view, co ve fragmentu mam - proto jsem to testoval na nem

    zkousel jsem si ted udelat jeden layout s edittextem, abych si otevrel softinput (klavesnici) a nasledne prejit do dalsiho fragmentu a chova se to spravne
    TCHUBA
    TCHUBA --- ---
    LWEEK: Když potřebuješ soubor rozdělit na tematické bloky, máš moc dlouhý soubor :D
    Taky roky dělám jak iOS tak Android a dokud Xcode nevyhodí adresářovou strukturu řešenou přes pbxproj, nepřestane mi při každém git commitu nabízet neznámé soubory které jsou v .gitignore (něco z dependencies) a začne brát parametry ze storyboardů stejně jako ze swift kódu (dívám se na tebe, semanticContentAttribute, který ve storyboardu nefunguje a ve swiftu ano), tak budu vždycky preferovat Android Studio
    LWEEK
    LWEEK --- ---
    To já zase brečím s Android studiem. Děsně mě prudí třeba to, že to neumí nějaké značky které funkcionalitu v jednom souboru rozdělí na "tématické" bloky. Asi to je fakt jak co komu sedí, na co je zvyklý. Mimochodem už jsi někdy v Androidu řešil notche? V iOS je tam virtuální hook (constrainta). V Androidu nic takového není. Byl tam parametr s výškou notche, který byl privátní ale viditelný, tak ho pro jistotu Google úplně schoval a jediná šance jak to řešit je přetížit View a odchytávat si event bublající skrze view strom. Sranda ale je, že nemáš nikdy 100% jistotu že ti tam ta hodnota dobublá, protože ji může něco po cestě "zkonzumovat". Šílenství.
    LWEEK
    LWEEK --- ---
    YAZZMAN: To je právě to. Dělám EET kasu a řeším každý pixel. Každý mobil má jinak vysokou soft klávesnici. Potřebuju ten input vertikálně umístit nad klávesnici. Za normálních okolností když nastavím, že se má view přizpůsobovat view portu tak to funguje, ale tady nemohu protože potřebuju mít staticky nasázený viewčka a zarovnaný ke spodku obrazovky. Jo a obrazovka musí být fullscreen. Takže takové to automatické posouvání TextInputů nefunguje.
    YAZZMAN
    YAZZMAN --- ---
    LWEEK: 6 let delam Android i iOS najednou a musim rict, ze to mam presne naopak: jakmile mam delat iOS, vyskacou mi pupinky :(
    Xcode neni dobre IDE ani vzdalene a jakmile vidim konflikty ve storyboardech, jdu si hodit :(

    Kazdopadne to co popisujes mi zni strasne nestandardne. Asi bych musel znat use case, ale vysku klavesnice pred tim, nez se realne vykresli, nezjistis. Muzes si napojit listener na focus change na editTexty a resit to tam, ale fakt nevim, jestli je to to, co potrebujes :)
    LWEEK
    LWEEK --- ---
    Musím říct, že z Androidu asi zešílím. 7 let jsem dělal iOS vývojáře. Teď rok dělám Android vývojáře a neustále narážím na neskutečný shit. Například potřebuju upravit layout podle velikosti softwarové klávesnice. Ale chci to udělat ještě předtím než se layout vykreslí aby to uživateli neskákalo. Myslíte, že se v Androidu dá nějak normálně dotázat na výšku soft. klávesnice? Za ten rok jsem fakt na pokraji vyhoření. Jak to můžete dělat a nezbláznit se? x)
    GIOMIKY
    GIOMIKY --- ---
    Takova zacatecnicka otazka. Mam MainActivity tridu. V ni webview. Jak spravne zavolat metodu webview z jine tridy? Webview neni staticke. A vytvaret objekt hlavni tridy mi taky neprijde jako stastny napad...
    LWEEK
    LWEEK --- ---
    Když to tak čtu, tak mám chuť jít péct housky. Možná budu vnitřně spokojenější a dožiju se vyššího věku. :)
    MR_DAN
    MR_DAN --- ---
    LUCIEN: super!

    jedna spis z projektoveho soudku - pokud si vyberu flutter misto react-native (ve spouste parametru to dava smysl), jak moc hur se mi budou shanet vyvojari na to? ma nekdo zkusenost? nebo se libovolnej reactak vklidu nauci i s dartem?
    protoze react je aktualne celkem trendy, o dartu jsem se dozvedel ted (nejsem uplne frontend/mobilni vyvojar)
    LUCIEN
    LUCIEN --- ---
    Pardon za pripadne OT [ Flutter a Dart ]
    Kliknutím sem můžete změnit nastavení reklam