Android - Informatikai Intézettanacs/oktatas/szggraftg15/Android... · Android •Az Android egy mobil eszközök számára kifejlesztett szoftverrendszer, amely magába foglal egy

Embed Size (px)

Citation preview

  • Android fejlesztsAlapok

    Tancs Attila, Klmn Kornl

  • Android

    Az Android egy mobil eszkzk szmra kifejlesztett szoftverrendszer, amely magba foglal egy opercis rendszert, kzpszintet (middleware) s clalkalmazsokat.

    Az Android SDK olyan eszkzket s alkalmazsprogramozsi felleteket (APIs) biztost, melyek szksgesek az Android platformon val alkalmazsfejleszts elkezdshez, mindezt Java programozsi nyelven.

  • Fbb jellemzk

    Az alkalmazs keretrendszer lehetv teszi az egyes alkotelemek, komponensek jrafelhasznlst s helyettestst.

    Mobil eszkzkre optimalizlt Dalvik (jabban ART) virtulis gp

    A nylt forrskd WebKit motoron alapul beptett bngsz

    Egy 2D grafikai programknyvtrra pl optimalizlt grafikai mveletek OpenGL ES 1.1-re s 2.0-ra pl 3D grafika Hardver gyorsts opcionlisan

    SQLite strukturlt adattrolshoz

    Mdiatmogats a kzismert audio, video s llkp formtumokhoz MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF

    GSM telefonls (hardver fgg)

    Bluetooth, EDGE, 3G s WiFi (hardver fgg)

    Kamera, GPS, irnyt s gyorsulsmr (hardver fgg)

    Gazdag fejlesztkrnyezet cleszkz emulcis program, hibakeres eszkzk (debug), bvtmny az Eclipse integrlt fejleszti krnyezethez, lehetv teszi memria- s teljestmnyprofilok ltrehozst.

    http://hu.wikipedia.org/wiki/WebKit

  • Knyvtrak

    Az Android magba foglal j nhny C/C++ programknyvtrat, amelyeket az Android rendszer klnbz alkotelemei hasznlnak. Ezen kpessgek/funkcionalitsok a fejlesztkhz az Android alkalmazs-keretrendszern keresztl jut el. Nhny a knyvtrak kzl az albbi listn lthat:

    C rendszerknyvtr: a C nyelv rendszerknyvtrnak (libc) egy BSD-leszrmazott megvalstsa, begyazott, Linux-alap eszkzkre optimalizlva.

    Mdia knyvtrak: a PacketVideo OpenCORE multimdis alrendszern alapul;a knyvtrak tmogatjk tbb elterjedt audio, video s llkp formtum fjl rgztst s visszajtszst (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG stb.)

    Fellet menedzser: a kijelz alrendszerhez val hozzfrst kezeli, s zkkenmentesen rak ssze 2D s 3D grafikus rtegeket tbb alkalmazsbl

    LibWebCore: egy modern web bngsz motor, amely egyszerre hajtja meg az Android bngszt s egy begyazhat web nzetet.

    SGL: a mgttes 2D grafikus motor 3D knyvtrak: egy OpenGL ES 1.0 s 2.0 API-kon alapul megvalsts;

    a knyvtrak hasznlnak mind 3D gyorstst (ha elrhet), mind az ersen optimalizlt szoftveres 3D raszterezt

    FreeType: bittrkp s vektorgrafikus szveg renderels SQLite: egy minden alkalmazs szmra hozzfrhet hatkony, de egyszer

    relcis adatbzis motor

    http://hu.wikipedia.org/wiki/Berkeley_Software_Distribution

  • Architektra

  • Alkalmazsok

    Alap alkalmazsok elre teleptve E-mail kliens, SMS program, naptr, trkp, web bngsz, nvjegyek stb.

    Java nyelven kszlnek

    j alkalmazsok Fejlesztk szmra elrhetk a hardver elemek, hely informci;

    httr szolgltatsok futtathatk, riasztsok, rtestsek adhatk stb.

  • Alkalmazs keretrendszer

    A fejlesztknek teljes hozzfrsk van ugyanahhoz a keretrendszerbeli alkalmazsprogramozsi fellethez, amelyet az alapvet alkalmazsokis hasznlnak.

    Az alkalmazs felptse gy van megtervezve, hogy egyszerstse a komponensek jrafelhasznlst;brmely alkalmazs nyilvnoss tudja tenni kpessgeit, gy brmely msik alkalmazs felhasznlhatja azokat (a szksges biztonsgi megszortsokrl a keretrendszer gondoskodik).

    Szintn ezen mechanizmus teszi lehetv a komponensek egymssal val helyettestst a felhasznl szmra.

  • Futtat krnyezet

    Az Android tartalmaz nhny alapvet knyvtrat, amelyek biztostjk a Java programozsi nyelv magknyvtraiban tallhat legtbb funkcionalitst

    Minden Android alkalmazs a sajt processzt futtatja, a sajt DalvikVirtulis Gp (DVM) pldnyval egytt

    A Dalvik gy lett megrva, hogy egy eszkz hatkonyan futtathassa tbb virtulis pldnyt. A DVM a Dalvik Executable (.dex) formtumban futtatja a fjlokat, mely a lehet legkisebb memria-felhasznlsra lett optimalizlva. A DVM regiszter alap, s a Java nyelv ltal lefordtott osztlyokat a beptett DX eszkz ltal .dex formtumra talaktva hajtja vgre.

    A DVM mgttes funkcionalitsrt, gy mint vgrehajtsi szlak (thread) hasznlata vagy alacsonyszint memriakezels, a Linux kernelhezfordul.

    Az jabb ART virtulis gp az alkalmazs teleptsekor vgi el a fordtst Lassabb a telepts s nagyobb helyet foglal el az alkalmazs

    Gyorsabb az alkalmazsok indtsa s futtatsa

  • Linux Kernel

    Az Android a Linuxra tmaszkodik 2.6 a korbbi Android verzik esetn

    3.x az ICS verzi ta

    Alapvet rendszer szolgltatsok, mint pldul biztonsg, memriakezels, processzuskezels, hlzati protokoll verem, illesztprogram modell.

    A kernel egy, a hardver s a szoftverrendszer tbbi rsze kzti absztrakcis rtegknt is mkdik.

  • Alkalmazsok alapjai

    Android alkalmazsok a Java programozsi nyelven rdnak

    A lefordtott Java kd brmilyen adat- s az alkalmazs ltal krt erforrsfjllal egyetemben egy Android package-be van becsomagolva, amely egy .apk kiterjeszts archv fjl. Egy .apk fjlban lv ssze kd tekinthet egy alkalmazsnak.

    Sok tekintetben egy Android alkalmazs a sajt vilgban ltezik:

    Minden alkalmazs a sajt Linux processzt futtatja. Az Android elindtja a processzt amikor valamely alkalmazs kdja vgrehajtand, s lelltja azt, amikor nem szksges mr s egyb alkalmazsoknak szksgk van (rendszer) erforrsra.

    Minden processznek meg van a sajt virtulis gpe (DVM), azaz az alkalmazs kdja egyb alkalmazsoktl elklntve hajtdik vgre.

    Alaprtelmezsben minden alkalmazs szmra ki lesz osztva egy (egyedi) Linux felhasznli azonost. Az engedlyek gy vannak belltva, hogy az alkalmazs fjljai csak az adott felhasznl s csak az alkalmazs szmra legyenek lthatk habr van md egyb alkalmazsok szmra elrhetv tenni ket.

  • Alkalmazs komponensek

    Aktivitsok (Activities) Vizulis fellet a felhasznl szmra a feladat elvgzshez

    Egy alkalmazs egy vagy tbb aktivitsbl llhat

    Nzet osztly leszrmazottjai hasznlhatk

    (Httr)szolgltatsok (Services) Nincs UI, httrben fut

    Pl. zenelejtszs, pozcifigyels

    Broadcastfogadk (Broadcast receivers) Nincs UI, de indthat aktivitst, vagy adhat rtestst

    Tetszleges szm zenetre reaglhat

    Pl. idzna vltozott, kp elkszlt, bejv hvs, rendszer nyelvi belltsa vltozott

    Tartalomszolgltatk (Content providers) Adatokat szolgltatnak ms alkalmazsoknak

    Pl. kontakt informcik

  • Komponensek aktivlsa

    Intent objektum Aszinkron zenetek

    Aktivitsok, broadcastfogadk, szolgltatsok aktivlsra

    Ezek kztti kommunikcira, paramtertadsra

    F tpusai Direkt: megmondjuk pontosan melyik csomag hajtdjon vgre

    Indirekt: szndkot kzlnk egy feladat vgrehajtsra (pl. email kldse, FTP, ), vlaszthatunk a rendszerben regisztrlt alkalmas vgrehajt komponensek kzl

    Feladatok Aktivitsok sorozata

    Akr ms alkalmazs aktivitsa is lehet

    Aktivits verem

    Vissza gomb: elz aktivits a verembl

  • AndroidManifest.xml

    Komponensek adatainak sszefoglalsra Minden APK csomag tartalmazza

    Rgztett a neve

    Tartalma A komponenshez tartoz aktivits objektum neve, ikonja, cmkje

    Intent szrk (mire reagl a komponens)

    Engedlyek (milyen engedlykteles szolgltatsokat hasznl: pl. telefonhvsok kezdemnyezse, GPS, kontakt adatokhoz hozzfrs)

  • Komponensek letciklusa

    Egy aktivitsnak lnyegben 3 llapota van:

    Aktv vagy fut, amikor a kpernyn az eltrben van (az aktivits veremben legfell helyezkedik el). Ez az aktivits kezeli a felhasznli tevkenysget.

    Felfggesztett, ha nem az aktivits reagl a felhasznli tevkenysgre, de mg lthat a felhasznl szmra.Akkor van, amikor egy msik alkalmazs az addig aktv/fut fel kerl, s ezen aktivits vagy tltsz, vagy nem tlti ki az egsz kpernyt, szval nhny meglltott alkalmazs ltszdhat. Egy meglltott aktivits mg teljes mrtkben megmarad (fenntart minden llapot informcit, s tovbbra is csatlakozik az ablak kezelhz), de a rendszer vget vethet neki nagyon kevs rendelkezsre ll memria esetn.

    Meglltott, ha teljesen httrbe kerl egy msik aktivits miatt. Tovbbra is fenntartja minden llapot s bels informcijt. Tbb nem lthat a felhasznl szmra, szval a hozz tartoz ablak rejtett, sltalban a rendszer meglltja, amikor valahol szksg van memrira.

  • Ha egy aktivits felfggesztett vagy meglltott llapotban van, a rendszer kitrlheti a memribl anlkl, hogy megkrn a befejezsre (finish( )eljrs meghvsa), vagy egyszeren csak megszntetheti a processzt. Amikor jra a felhasznl el kerl, teljesen jraindtand s visszalltand az elz llapotba.

    Mivel egy aktivits llapotbl llapotba vlt, a vltozsokat a kvetkez vdett (protected) eljrsokkal van kezelve:

    void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()

    Ezen eljrsok az llapotok nyomon kvetsre valk, gy felldefinilhatk, hogy az elvrt mdon reagljanak az llapotvltozsokra.

    Minden aktivitsnak implementlnia kell onCreate() eljrst, hogy elvgezze a kezdeti belltsokat az objektum els pldnyostsakor.

    Sok alkalmazs az onPause() eljrst is implementlja, hogy kezelje az adatvltozsokat s ezen fell felkszl a felhasznlval val egyttmkds befejezsre.

  • onCreate()Az aktivits els meghvsakor hvdik meg. Itt kell elvgezni az sszes statikus belltst: nzetek ksztse, adatok lektse listkhoz stb. Egy Bundleobjektumot vr paramterben, mely tartalmazhatja az aktivits elz llapott. Mindig onStart() kveti.

    onRestart()Az aktivits meglltsa utn hvdik meg, kzvetlenl azeltt, hogy jra elindulna. Mindig onStart() kveti.

    onStart()Kzvetlen azeltt hvdik meg, hogy az aktivits lthatv vlna a felhasznl szmra.

    onResume()Kzvetlenl azeltt hvdik meg, hogy az aktivits interakciba lpne a felhasznlval. Ilyenkor az aktivits az aktivits verem tetejn van, a felhasznli bemenetelet fogadja. Mindig onPause() kveti.

    onPause()Akkor hvdik meg, amikor a rendszer egy msik aktivitst akar folytatni. ltalban adatvltozsok mentsre, animcik s egyb CPU-ignyes feladatok lelltsra hasznljk. Brmit is csinl, azt nagyon gyorsan kell tennie, mivel a kvetkez aktivits addig nem folytatdik, amg vissza nem tr.

    onStop()Akkor hvdik meg, ha az aktivits tbb nem lthat a felhasznl szmra. Ez trtnhet, ha az aktivits megsznik, vagy ha egy msik folytatdik, s elfedi ezt.

    onDestroy()Az aktivits megsznsekor hvdik. Ez trtnik, ha az aktivits befejezdik, vagy ha a rendszer ideiglenesen megsznteti ezt az aktivitspldnyt. A kt eset kztt az isFinshing() metdussal lehet klnbsget tenni.

  • Aktivitsok llapotmentse

    Ha a rendszer memria felszabadtsa vgett lellt egy aktivitst, a felhasznl vissza akarhat trni az aktivitsba, annak legutbbi hasznlt llapotba. Hogy megrktse ezt az llapotot mieltt az aktivits megsznne, implementlhat az aktivits onSaveInstanceState() metdusa. Az Android meghvja ezt az eljrst, azeltt, hogy az aktivits megsznse fenyegetne, azaz mieltt az onPause() eljrs meghvdna. A rendszer tad egy Bundle obejktumot, gy az aktivits llapota nv-rtk pronkknt elmenthet. Ha az aktivits jraindul, a Bundle taddik mind az onCreate(), mind az onStoreInstanceState() eljrsnak, mely utbbi az onStart()utn hvdik meg, gy brmelyikben vagy mindkettben visszallthat az llapot.

    Az onPause() s a tbbi fentebb felsorolt eljrssal szemben onSaveInstanceState()s onStoreInstanceState() nem letciklus-metdusok. Pldul, az Android rendszer nem hvja meg az onStoreInstanceState() eljrst, ha az aktivits felhasznli tevkenysg kvetkeztben sznik meg (pl. Vissza gomb). Ebben az esetben ugyanis a felhasznl nem kvn visszatrni az aktivitshoz, gy nincs ok annak llapotnak elmentsre.

    Amirt onSaveInstanceState() nem hvdik meg mindig, csak tmeneti llapot mentsre hasznland. lland adatok mentsre az onPause() metdus ajnlott.

  • Aktivitsvltsok koordinlsa

    Amikor egy aktivits elindt egy msikat, mindkett letciklusban vltozsok kvetkeznek be. Az egyik felfggesztdik vagy meg is llhat, mg a msik elindul.

    Az letciklus visszahvsok/eljrsok sorrendje meghatrozott: Az aktulis aktivits onPause() metdusa meghvdik.

    Ezutn az j aktivits onCreate(), onStart() s onResume() metdusa sorban meghvdnak.

    Majd amikor az jonnan elindtott aktivits nem lthat a kijelzn, az onStop()metdusa meghvdik.

  • Processzusok letciklusa

    Az Android rendszer igyekszik megtartani egy alkalmazs processzt ameddig csak lehetsges, de idnknt szksges eltvoltani rgi processzeket, ha a memria elfogy. Meghatrozand mely processzeket tartsa meg vagy szntesse meg, a rendszer fontossgi hierarchiba sorolja a processzeket a bennk fut komponensek s azok llapota alapjn. 5 szint van a hierarchiban, a kvetkezkben ezek lthatak fontossg szerint cskken sorrendben:

    Eltrben lv processz, mely ahhoz szksges, amit a felhasznl ppen csinl. Egy processzaz eltrbe kerl brmely kvetkez fennllsa esetn.

    Olyan aktivitst futtat, amellyel a felhasznl interakciban van (ilyenkor az Activity objektum onResume() metdusa meghvdik).

    Olyan szolgltatst tartalmaz, amely szksges a felhasznlval interakciban lv aktivitshoz. Tartalmaz egy Service objektumot, amely egy letciklus visszahvst hajt vgre (onCreate(), onStart()

    vagy onDestroy()). Tartalmaz egy BroadcastReceiver objektumot, amely az onReceive() eljrst hajtja vgre. Csak nhny eltrben lv processz ltezhet egy adott pillanatban. Legvgs esetben megsznik egy,

    ha annyira kevs a memria, hogy nem tudja mind folytatni a futst. ltalban ilyenkor a memria betelik, teht a felhasznli interfsz mkdkpessge rdekben meg kell szntetni nhny processzt.

    Lthat processz az, melynek nincs eltrbeli komponense, de hatssal lehet arra, amit a felhasznl a kpernyn lt. Egy processz lthat, ha az albbiak valamelyike teljesl:

    Olyan aktivitst nyjt, amely br nincs a eltrben, lthat a felhasznl szmra (onPause() metdusa meghvdott). Ez trtnik pldul akkor, ha az eltrben lv aktivits egy prbeszd ablak, amely mgtt mg ltszdik az elz aktivits.

    Olyan szolgltatst nyjt, amely szksges egy lthat aktivits szmra.

  • Szolgltats processz az, mely futtat egy szolgltatst, mely a startService()metdussal lett elindtva, de nem tartozik az elz kt kategriba. Br a szolgltats processzek nem kthetk kzvetlenl valamihez, amit a felhasznl lt, olyan dolgokat csinlnak, amivel a felhasznl trdik (pl. mp3 lejtszsa a httrben, adat letltse a hlzaton), gy a rendszer futtatja ezeket, hacsak nincs elg memria, hogy az eltrbeli s lthat processzekkel egytt fussanak.

    Httr processz az, mely olyan aktivitst tartalmaz, amely ppen nem lthat a felhasznl szmra (az aktivits onStop() eljrsa meg lett hvva). Ezen processzeknek nincs kzvetlen hatsuk a felhasznli lmnyre, s brmikor megszntethetk annak rdekben, hogy egy fontosabb processznek legyen memrija. ltalban sok httr processz fut, gy azok egy LRH (legritkbban hasznlt, angolul Last Recently Used) listban vannak nyilvntartva biztostva, hogy a felhasznl ltal a korbbiakban legtbbet hasznlt aktivits processzelegyen legksbb megszntetve. Ha egy aktivits letciklus eljrsait helyesen implementlja s megrzi az aktulis llapott, a processz trlsnek nem lehet kros hatsa a felhasznli lmnyre.

    res processz az, mely nem tartalmaz aktv alkalmazs sszetevt. Az res processz olyan folyamat, amelynek nincs aktv komponense. Ilyen folyamatokat csak cache gyannt hasznlunk, hogy amikor egy komponens legkzelebb futtatni akarja, gyorsabban induljon. A rendszer gyakran kilvi ezeket a folyamatokat, hogy a rendszererforrsok kiegyenltetten legyenek elosztva a folyamatcache-ek s a mgttes kernelcache-ek kztt.

  • Felhasznli fellet (UI)

    Egy Android alkalmazsban a felhasznli interfsz View (nzet) s ViewGroup(nzetcsoport) elemekbl pl fel. Sokfle nzet s nzetcsoport ltezik, mindegyik a View osztly leszrmazottja.

    A nzet objektumok a felhasznli interfsz alapegysgei. A View osztly alapjt kpezi a widget-eknek (vezrlknek) nevezett alosztlyoknak, melyek ksz grafikus elemeket jelentenek gy, mint szvegmezk s gombok.

    A ViewGroup osztly alapjt kpezi a layout-oknak (elrendezseknek) nevezett alosztlyoknak, melyek klnbz elrendezs megjelentst tesznek lehetv gy, mint sorban, tblzatban, valamihez kpest relatvan elhelyezett elemek.

    Egy View objektum egy olyan adatszerkezet, amelynek paramterei troljk az elrendezs tulajdonsgait s tartalmt a kperny egy adott tglalap alak rszhez. A View objektum kezeli a sajt mrett, elrendezsnek (layout) rajzolst, fkuszvltozst, grgetst/lapozst s a kperny adott rszhez tartoz felhasznli beavatkozsokat (billentyk, gesztusok). Egy felhasznli interfszen belli objektumknt, egy View szintn lehet a felhasznl szmra egy visszajelzsi pont s a felhasznli beavatkozsokhoz tartoz esemnyek kezelje.

  • Nzet hierarchia

    Egy tevkenysg (activity) felhasznli interfsze egy hierarchiaknt definilhat, melynek csompontjai View s ViewGroup objektumok.

    Ez a hierarchia-fa olyan egyszer vagy sszetett lehet, amilyenre csak szksgnk van, s felpthet mind az Androidban elre definilt widget s layout objektumok, mind egyni vezrlk s elrendezsek felhasznlsval, melyeket mi ksztnk el.

    Gykrelem: setContentView()

    Minden ViewGroup objektum felels felszltani View gyermekeit, hogy rajzoljk meg magukat.

    A gyermekei krhetnek egy mretet s elhelyezst a szln bell, s a szl objektum dnt, hol s mekkora lehet minden gyerek objektum.

  • Elrendezs (Layout)

    Az elrendezst s nzet hierarchit ltalban egy XML elrendezs fjldefinilja.

    Minden elem az XML-ben vagy View vagy ViewGroup objektum (vagy azok leszrmazottja). A View objektumok levelek, a ViewGroupobjektumok elgazsok a fban.

    Egy XML elem neve megfelel az t megvalst Java osztlynak, pldul: TextView, LinearLayout.

    Amikor betltnk egy elrendezst, az Android rendszer inicializlja ezen futs idej objektumokat, a benne lv elemeknek megfelelen.

  • Vezrl elemek

    Egy vezrl elem egy olyan View objektum, amely a felhasznlval val kzremkdsre szolgl interfsz.

    Az Android biztost nhny teljesen implementlt vezrl elemet (gombok, vlaszt mezk, szvegbeviteli mezk), ezekkel gyorsan pthet egy UI (felhasznli interfsz).

    Az Android nhny vezrl eleme sszetettebb, mint pldul egy adat begyjt, egy ra vagy egy zoom kezel.

    De nem vagyunk az Android nyjtotta widgetekre korltozva. Ltrehozhat sajt, specifikus elem sajt View objektum definilsval, vagy mr ltezk kiterjesztsvel, kombinlsval.

  • UI esemnyek

    Egy hozzadott View/widget elem esetn nyilvn tudni akarunk a vele val felhasznli

    interakcirl, hogy egy bizonyos mkdst vgrehajtva vlaszolhassunk r. Az UI

    esemnyek kezelsre kt lehetsg van:

    Definilni egy esemny figyelt, s hozzrendelni az adott View objektumhoz. ltalban gy figyeljk

    az esemnyeket. A View osztly beptett interfszeket tartalmaz OnListener nvvel,

    mindegyikhez egy On() visszahvhat fggvny tartozik.

    Pldul View.OnClickListener (kattintsok kezelsre), View.OnTouchListener (rintkperny esemnyeinek

    kezelse), s View.OnKeyListener (fizikai gombok kezelse). Teht, hogy egy View objektum rtesljn arrl, hogy

    rkattintottak (pl. egy gomb megnyomsa ltal), implementlni kell OnClickListener-t definilva az onClick()

    eljrst (ahol reaglhatunk a kattintsra) s hozzrendelve azt a View-hoz a setOnClickListener()-rel.

    Valamely View-hoz tartoz visszahvhat eljrs felldefinilsa. Ez a teend sajt View tpus osztly

    megvalstsakor. Tbbek kztt kezelhet gy a kperny megrintse (onTouchEvent() ), a joystick

    megmozdtsa (onTrackballEvent() ) vagy egy gomb megnyomsa az eszkzn (onKeyDown() ). Ezltal

    megadhat minden esemnyhez az alaprtelmezett viselkeds, s meghatrozhat, hogy az esemny

    tovbb legyen-e adva valamely gyerek View-nak. Teht, mivel ezek a View osztly visszahvhat eljrsai,

    az egyetlen lehetsg definilni ket a sajt komponens ltrehozsa.

  • Elrendezsek (layout) megadsa

    Ktflekppen adhat meg az elrendezs:

    UI elemek megadsa XML-ben Az Android egyrtelm XML kulcsszavakkal rendelkezik a View osztlyok s

    leszrmazott osztlyoknak megfelelen.

    Ezen megolds elnye, hogy az alkalmazs megjelensrt felels kdot elvlasztja a viselkedsrt felelstl. Az UI lers kvl van az alkalmazs kdjn, azaz mdosthat, tdolgozhat a forrskd mdostsa s jrafordtsa nlkl.

    Elrendezs elemek pldnyostsa futs kzben Az alkalmazsok kpesek ltrehozni View s ViewGroup objektumokat s

    befolysolni azok tulajdonsgait programbl.

  • Az Android keretrendszer lehetv teszi brmelyik, vagy mindkett hasznlatt is.

    http://schemas.android.com/apk/res/android

  • XML betltse

    Az alkalmazs lefordtsakor minden XML layout fjlbl ltrejn egy Viewerforrs.

    Ezt az erforrs fjlt be kell tlteni az alkalmazs kdjban, az Activity.onCreate() visszahvhat eljrsbl. Ez a setContentView()meghvsval trtnhet, amelynek t kell adni az erforrsra val hivatkozst R.layout. alakban. Pldul, ha az XML main_layout.xml nven van elmentve, gy tlthet be:

    Az onCreate() visszahvhat eljrst a Aktivitsban az Android keretrendszer hvja meg, amikor elindtjuk az alkalmazst.

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main_layout);

    }

  • XML attribtumok

    Minden View s ViewGroup objektum sajt XML attribtumokat tmogat.

    Vannak specifikus attribtumok egy View objektumhoz (pldul a TextView tmogatja a textSize attribtumot), de ezek az attribtumokat rkli brmely View objektum, amely kiterjeszti az osztlyt.

    Nhny kzs minden View objektum szmra, mert a gykr View objektumbl van rklve (pldul az id attribtum).

    s vannak mg az elrendezs paramterek, amelyek a View objektum konkrt elhelyezkedst adjk meg, ahogy a szl ViewGroupobjektumban meg van hatrozva.

  • ID Brmely View objektum trsulhat egy egsz szm azonost, mely egyrtelmen

    azonostja az objektumot a fn bell. Az alkalmazs lefordtsakor erre az ID-raegsz szmknt hivatkoznak, de tipikusan az XML fjlban van meghatrozva karakterlncknt, az id attribtumban. Ez egy minden View objektum szmra elrhet attribtum (View osztlyban ltal van megadva), s gyakran hasznlatos. A szintaxis az XML-en bell a kvetkez:

    A kukac jel (@) az elejn azt jelzi, hogy az XML elemznek elemeznie kell s ki kell terjesztenie a sztring htralv rszt, s egy ID erforrsknt kell beazonostania.

    A plusz jel (+) azt jelenti, hogy ez egy j forrs neve, amit ltre kell hozni s hozz kell adni az erforrsainkhoz (az R.java fjlban).

    Szmos, az Android keretrendszer ltal nyjtott, egyb ID erforrs ltezik mg. Amikor egy Android erforrs ID-re hivatkozunk, nincs szksg a plusz jelre, de

    meg kell adni a csomag nvtert, pldul:

    Megadva a nvteret, egy az android.R erforrs osztlyban tallhat ID-rehivatkozunk, a helyi erforrs osztly helyett.

    ANDROID:ID="@+ID/MY_BUTTON

    ANDROID:ID="@ANDROID:ID/EMPTY"

  • Erforrsok a kdban

    Nzetek ksztsre s az alkalmazsbl rjuk val hivatkozsra egy minta:

    Definilni egy view/widget-et az elrendezs fjlban, s megadni hozz egy azonostt:

    Majd pldnyostani a View objektumot s sszektni az erforrs elemmel (tipikusan az onCreate() eljrsban):

    Button myButton = (Button) findViewById(R.id.my_button);

  • Elrendezs paramterek

    A layout_ nev XML elrendezs attribtumok a View szmra elrendezs paramtereket hatroznak meg a, amelyek megfelelnek a ViewGroup objektumnak, amelyben az megtallhat.

    Minden ViewGroup objektum implementl egy begyazott osztlyt, amely a ViewGroup.LayoutParams-ot terjeszti ki. Ez az alosztly klnbz tpus tulajdonsgokat tartalmaz, melyek minden gyermek objektum mrett s pozcijt megadjk.

    Minden LayoutParams alosztly meg van a sajt szintaxisa az rtkek belltsra. Minden gyerek elemnek meg kell adnia a szlnek megfelel LayoutParams paramtereket, noha az szintn megadhat klnbz paramtereket a sajt gyerekeinek.

    Minden nzetcsoport tartalmaz szlessget s magassgot (layout_width s layout_height), s minden nzetnek definilnia kell azokat. Sok LayoutParams tartalmaz mg margkat s szeglyeket is.

    Megadhat egzakt mrtkknt a szlessg s a magassg, habr ez ritka. Gyakoribb a kvetkez konstansok valamelyiknek hasznlata:

    wrap_content a nzetet a tartalmnak megfelel mretre mretezi

    fill_parent (match_parent az API level 8-tl kezdden) a nzetet akkorra mretezi, amekkornak hagyja a szl nzetcsoportja.

    ltalban, egy elrendezs mreteinek abszolt egysgekkel (pl. pixel) val megadsa nem ajnlott.Ehelyett relatv mrtkek, mint pldul tmrsg-fggetlen pixel egysg (dp), wrap_content, fill_parent, hasznlata egy jobb megkzelts, mert ez segt biztostani, hogy az alkalmazs helyesen jelenjen meg klnbz mret kijelzkn.

  • Tutorialok

    Android Wireless Application Development knyv Chapter06_code.zip Chater07_code.zip, Chapter08_code.zip

    Pldaprogramok Elements.zip

    AritmTest_01.zip, AritmTest_02.zip, AritmTest_03.zip

    CodeProject Learn How to Develop Android Application

    Android UI Layouts and Controls

    Beginners Guide to Organizing/Accessing Android Resources

    Android Touch Gestures Capturing Interface

    Article 5 - Android User Interactivity and Sensors

    Android Developer portl Training for Android developers

    Notepad Tutorial (Android Developer Portal)

    http://www.codeproject.com/Articles/628894/Learn-How-to-Develop-Android-Applicationhttp://www.codeproject.com/Articles/807524/Android-UI-Layouts-and-Controlshttp://www.codeproject.com/Articles/808840/Beginner-s-Guide-to-Organizing-Accessing-Android-Rhttp://www.codeproject.com/Articles/808616/Android-Touch-Gestures-Capturing-Interfacehttp://www.codeproject.com/Articles/811087/Article-Android-User-Interactivity-and-Sensorshttps://developer.android.com/training/index.htmlhttp://developer.android.com/training/notepad/index.html