• ú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í
    RADDINO
    RADDINO --- ---
    H_U_N_T_E_R:
    H_U_N_T_E_R: díky, vyzkouším.
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    H_U_N_T_E_R: jo a ještě převod stringu z UTF16 na UTF8
    public static String toEncoding(String str) throws UnsupportedEncodingException {
    return new String(str.getBytes("utf8"), "utf8");
    }
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    RADDINO: jo, embeduju si tam ale svoje fonty:
    BaseFont bfAntigo = BaseFont.createFont("assets/fonts/antigonilight.ttf", textEncoding, BaseFont.EMBEDDED);
    Font antigo16 = new Font(bfAntigo, 15);
    ...
    PdfPCell cellCelkemCaption = new PdfPCell(new Paragraph(TextNormalizer.ToEncoding("CELKEM K ÚHRADĚ", textEncoding), antigo16));
    RADDINO
    RADDINO --- ---
    Používáte někdo iText na generování PDF z aplikace? Už jsem to nějak rozchodil, ale nejdou mi české znaky (ř,č,š..). Neřešil to někdo? Z stackoverflow jsem to napochopil. Díky
    GIOMIKY
    GIOMIKY --- ---
    GIOMIKY: aha tak zabralo vypnout a zapnout
    GIOMIKY
    GIOMIKY --- ---
    Ahoj, mel bych takovej lamma dotaz. Mam webView. Mam webStranku. Na webStrance mam javascript. Javascriptem se pokousim zachytit touchdown, touchmove, touchend. Ale bohuzel mi na pristroji nefunguje zachytavani techto eventu javascriptem. Je to HTML5 Canvas nejak takhle:

    canvas.addEventListener('touchend', touchend, false);

    function touchmove(ev){
    ev.preventDefault();
    var gnEndX = ev.changedTouches[0].pageX;
    var gnEndY = ev.changedTouches[0].pageY;
    ...
    }

    A webView je standardni neco na zpusob:

    mWebView = (WebView) findViewById(R.id.webViewPage);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    ... loadUrl ... atd.

    Ale jak rikam. Kdyz chci zachytit pohyb prstem po obrazovce na webView, tak se nedeje vubec
    nic. Predpokladam, ze pohyb prsty zachycuje andoroid aplikace a pokousi se je handlovat sama...
    a pritom nema zadny handler. A k tomu javascriptu se to vubec uz nedostane jako touchmove.

    Je to tak? Co s tim, aby mi stranka ve webView zacala zpracovavat touch eventy v Javascriptu?

    Predem diky za jakoukoliv radu (google jsem zkousel... rad spousty, ale asi to bude logicka chyba designu?)
    RADDINO
    RADDINO --- ---
    YAZZMAN:
    DRIZDIK: díky, nastuduji.
    DRIZDIK
    DRIZDIK --- ---
    RADDINO: Určitě bys měl persistovat někam ty data, ať už nějaká struktura v paměti na fragmentu nebo přímo DB, pokud ti appka spadne, tak budeš schopný obnovit ten stav.
    Místo linearu bych určitě použil recyclerView, kde nebudeš strojově vytvářet imageView, ale jen zavoláš datasetChanged nad adapterem a budeš moc jednoduše handlovat itemClick
    YAZZMAN
    YAZZMAN --- ---
    RADDINO: nebude jednodussi misto generovani ImageView pouzit RecyclerView? Jakoze o hodne jednodussi?
    CZERUDLA
    CZERUDLA --- ---
    RADDINO: Ahoj. Můžeš to tam "doprasit" tak, že v onActivityResult() budeš mít i obr.setOnClickListener(new OnClicklistener() {Dialog...});
    RADDINO
    RADDINO --- ---
    RADDINO: ještě ukázka těch metod
    Imageview · GitHub
    https://gist.github.com/ankhthief/fe4035ef90ecfd422a0fd9ef8b1711b5
    RADDINO
    RADDINO --- ---
    Jdu si pro radu zkušenějších. Mám fragment, kde ukládám do DB info o zranění a chci mít také možnost přiložit fotku. Nyní řeším to, že bych rád po vyfocení fotky ty fotky zobrazoval pod tlačítkem "Take photo .." a po kliknutí na ně otevřel fotku ve větším náhledu asi v Dialogu, kde by byla možnost fotku smazat. Aktuálně to mám tak, že po kliknutí na tlačítko se spustí camera Intent. Po vyfocení fotky se v OnActivityResult kódem vytvoří ImageView do definovaného LinearLayoutu a obrázek se zobrazí. Pokud vyfotím další, další obrázek se vytvoří pod to. Řeším teď, jak udělat obrázek kliknutelný, aby se po kliku otevřel Dialog, když nevím jeho ID, jelikož ty ImageView vytvářím dynamicky. Budu rád za nějaké nakopnutí, případně nasměrování, jak podobnou situaci řešit správně. Předpokládám, že moje řešení je prasárna.

    Díky moc

    JOHNY_G
    JOHNY_G --- ---
    Ještě k těm support packages. I kdybychom zapomněli na budoucí vývoj (jak psal DATEL), tak je tu slušná pravděpodobnost, že dřív nebo později narazíš na nekompatibilitu v nějaké classe, kterou Android vůbec nepodporuje, a existuje jenom v support libkách. Typicky ViewPager :-).
    DRIZDIK
    DRIZDIK --- ---
    MR_DAN: backstack je pro tebe něco jako history, s tím že jeden fragment můžeš mít v backstacku ale víckrát tak na to pozor. Současně to co dostaneš od manageru nemusí být stejná instance já tam byla předtím. Aplikace ti může umřít a znovu se probrat a backstack se mezi tím serializuje.
    DRIZDIK
    DRIZDIK --- ---
    MR_DAN: pokud neděláš něco drahého v onCreate nebo konstruktoru, tak si toho nevšimeš, jen si přidáš práci
    MR_DAN
    MR_DAN --- ---
    hmm, koukam na to, ze FragmentManager ma jakysi back stack, ktery jednak urcite budu chtit pouzivat a jednak se da pouzit i jako cache .. fragmentManager.findFragmentByTag(String)
    MR_DAN
    MR_DAN --- ---
    hmm, support baliky jako standard, zajimavy informace mi davate a dava to smysl...

    DRIZDIK: a co nejaka kombinace - cachovani instanci a zaroven ukladani jejich stavu pro pripad, ze by je system zabil a musely se vytvaret znova? byl by ten pripadnej rozdil v performance markantni? ja vlastne poradne nevim, jak draha operace je vyrvoreni fragmentu a naloadovani jeho stavu
    DRIZDIK
    DRIZDIK --- ---
    MR_DAN: Jak říká DACAN: .. rule of thumb je používat support package.
    U druhé teda vždy používám znovuvytváření fragmentů. Pamatováním si siceusnadníš práci na jedné straně, ale jen to doložíš, protože potřebuješ, aby ti appka přežila to, že jí hodíš na pozadí a obnovíš. V tu chvíli ti fragmenty i aktivita můžou stejně umřít, tak proč dělat dvě věci ... takže to co říká YAZZMAN používám jen pro FragmentPager, kde listuju horizontálně nějaký obrazovky, ale jinak určitě zapracuj na ukládání stavu. Od toho tam ten life-cycle je a použije se i jinde.
    DACAN
    DACAN --- ---
    DATEL: pouzivame vlastne jen support libky.
    DATEL
    DATEL --- ---
    Ono je teda otázka, zda vzhledem k tomu, jak Google s každou novou API verzí zavádí nové věci, starší dává jako deprecated - obecně, nejen u těch fragmentů - není lepší používat primárně ty support verze. Ono totiž support knihovny jsou aktualizované pořád, ale originální ne. Takže oprava bugů bude podle mě lepší v support knihovně. Nebo jak se na to koukáte vy ostatní?
    MR_DAN
    MR_DAN --- ---
    jo uz to mam, ta idea kdyz delam new->fragment->blank mi automaticky vytvari ty support,v4.Fragment potomky... to samy u aktivit
    Kliknutím sem můžete změnit nastavení reklam