Ing. LLANDkC ILCkL2 AkIS1I28AL lxexpxe[gmall.com learlsuzabal[admon.unla[c.edu.co [lxexpxe lnS1ALA8 Suk Anu8Clu Ll luL de desarrollo Lcllpse, Suk de Androld y Avu Manager se pueden descargar de la slgulenLe pglna web como un paqueLe comprlmldo. hup://developer.androld.com/sdk/lndex.hLml
una vez descargado y descomprlmldo procedemos a lnsLalar los paqueLes necesarlos. 8ecordar la ublcacln del Suk. lnS1ALA8 Suk Anu8Clu Ls convenlenLe manLener acLuallzados los paqueLes del Suk manager asl como el luL. ara acLuallzar el luL (Lcllpse): 1. Pelp -> lnsLall new Soware
hups://Jl-ssl.qooqle.com/ooJtolJ/ecllpse/ lnS1ALA8 Suk Anu8Clu lnS1ALA8 Suk Anu8Clu La recomendacln de paqueLes que deben ser descargados es: 8equerldos: Androld Suk 1ools (ManLenerlo acLuallzado) Androld Suk lauorm-Lools Suk lauorm (Se debe descargar al menos una plaLaforma para poder compllar la apllcacln) Se recomlenda descargar la uluma versln de Androld (Androld 4.3 Al18 hasLa esLe momenLo SL/13) y la versln ms ba[a en la cual se planea desarrollar (Androld 2.2 Al8 Androld 2.3.3 Al10) 8ecomendados: SysLem lmage (Se recomlenda descargar lmgenes de slsLema de Lodas las verslones de Androld para probar las apllcaclones) Androld SupporL Llbrary Coogle uS8 urlver Suk Samples (Cdlgo fuenLe de e[emplos. uescargar solo los de las Als descargadas para ser soporLadas) Coogle Als Coogle lay Servlces Iuente: hup:]]deve|oper.andro|d.com]sdk]|nsta|||ng]add|ng-packages.htm| C8LA8 un Avu (Anu8Clu vl81uAL uLvlCL) un Avu es una conguracln de dlsposluvo para el emulador de Androld que permlLe modelar dlferenLes conguraclones de dlsposluvos Androld. ara crear un Avu se debe lnlclar el Avu Manager en lnlclo->1odos los rogramas->Androld Suk 1ools->Avu Manager o desde Lcllpse en Wlndow->Avu Manager C8LA8 un Avu (Anu8Clu vl81uAL uLvlCL) C8LA8 un Avu (Anu8Clu vl81uAL uLvlCL) Se pueden crear LanLos Avu como desee para probar sus apllcaclones en dlferenLes conguraclones de equlpos. Se recomlenda probar las apps en Lodos los nlveles de Al mayores al Al ob[euvo de la apllcacln desarrollada.
Al crear los Avu, se les da un nombre, plaLaforma ob[euvo, Lamano de Lar[eLa Su y un skln. 1amblen se puede adlclonar caracLerlsucas de hardware especlco del dlsposluvo emulado dando cllck en el boLn new. y selecclonando la caracLerlsuca.
Asegurese de denlr un ob[euvo para su Avu que sausfaga las caracLerlsucas del dlsposluvo para el cual se consLruye la apllcacln (La plaLaforma ob[euvo [dlsposluvo real] debe Lener un nlvel de Al lgual o mayor que el nlvel de Al con el cual se complla la app)
8LCCuLS A8A CCnS18uCClCn uL ALlCAClCnLS Acnv|ty Componente IU que corresponde np|camente a una panta||a. Intentkece|ver kesponde a nonhcac|ones (1r|gger) o camb|os de estado. uede despertar un proceso. Serv|ce 1area s|n IU que se e[ecuta en "8ackground" Contentrov|der erm|te que |as ap||cac|ones compartan datos Anu8Clu A AcuvlLy AcuvlLy lnLenL Servlce lnLenL ConLenLrovlder lnLenL u8 AC1lvluAu (AC1lvl1?) una acuvldad es un componenLe de la apllcacln que provee una panLalla que se muesLra en el dlsposluvo para que el usuarlo pueda lnLeracLuar para hacer algo como marcar un Lelefono, Lomar una foLo, envlar un e-mall o ver un mapa. hup: //devel oper . andr ol d. com/gul de/componenL s/ acuvlues.hLml ara qulenes hayan programado en !avaML, es slmllar a un ob[eLo ulsplayable como un formularlo (lorm), llsLa (LlsL), Ca[a de LexLo (1exL8ox), AlerLa (AlerL) o Canvas. AC1lvluAu (AC1lvl1?) A dlferencla de !ava donde se lmporLan los paqueLes y slmplemenLe se crea un ob[eLo del upo de panLalla que se desea mosLrar, para Androld se debe crear una clase que exuenda (herede) de la clase base AcuvlLy por cada panLalla que posea la apllcacln. AC1lvluAu (AC1lvl1?) Cuando se abre una nueva panLal l a (acuvldad), la anLerlor queda pausada y puesLa en una plla donde la uluma en enLrar ser la prlmera en sallr. ClCLC uL vluA uL unA AC1lvluAu Aun no exlsLe
$ luenLe: hup://marakana.com/bookshelf/maln_bulldlng_blocks_LuLorlal/acuvlLy_llfecycle.hLml Cesuonadas x AcuvlLyManager AcuvlLyManager la dlrlge A Lraves de sus esLados Como desarrolladores uecldlmos que pasa en Las Lranslclones ln1L8lAZ uL uSuA8lC (ul) La lnLerfaz de usuarlo se dene en una archlvo xML locallzado en la carpeLa res/layouL. Acnv|ty_ma|n.xm| <ke|anveLayout xm|ns:andro|d=!"#$%&&'(")*+',+-./01.,(0*&+$2&/)'&+-./01.! xm|ns:too|s=!"#$%&&'(")*+',+-./01.,(0*&4005'! andro|d:|ayout_w|dth=!*+4("6$+/)-4! andro|d:|ayout_he|ght=!*+4("6$+/)-4! 7
<1extV|ew andro|d:|ayout_w|dth=!8/+$6(0-4)-4! andro|d:|ayout_he|ght=!8/+$6(0-4)-4! andro|d:|ayout_centernor|zonta|=!4/9)! andro|d:|ayout_centerVernca|=!4/9)! andro|d:padd|ng=!:.1*)-&$+..1-;6*).19*! andro|d:text=!:'4/1-;&")550680/5.! too|s:context=!,<+1-=(>?14@! &7 <]ke|anveLayout ln1L8lAZ uL uSuA8lC (ul) Ln uempo de e[ecucln, la lu se carga en el mane[ador de evenLos onCreaLe() en la clase !ava de la Acuvldad usando el meLodo seLConLenLvlew() de la clase AcuvlLy. MalnAcuvlLy.[ava
QCverr|de pub||c vo|d onCreate(8und|e savedInstanceState) { super.onCreate(savedInstanceState), setContentV|ew(k.|ayout.+(>?14@6*+1-AB } AndroldManlfesL.xml LsLe archlvo es una descrlpcln de la apllcacln para que sea conoclda en el mundo exLerlor (Ll slsLema operauvo desuno). Ln esLe archlvo se reglsLran las Acuvldades, los lnLenLs para las Acuvldades, capas de comunlcacln y permlsos. Androld Lssenuals (Chrls Paseman) AC1lvl1? Andro|dMan|fest.xm|
</manlfesL> ln1L8lAZ uL uSuA8lC (ul) usualmenLe es ms fcll consLrulr la lu modlcando el archlvo .xml, pero en ocaslones se neceslLar hacerlo en uempo de e[ecucln por medlo de cdlgo modlcando el archlvo .[ava vlLW Son ob[eLos herederos de la clase androld.vlew.vlew conLenldos en una Acuvldad y que uenen una aparlencla en panLalla. L[emplos de esLos son: 1exLvlew LdlL1exL 8uuon lmage8uuon Check8ox 1oggle8uuon 8adlo8uuon 8adloCroup 1exLvlew Los 1exLvlew son euqueLas en las cuales se muesLra un LexLo [o, modlcable solo por soware. 1exLvlew <8elauveLayouL mlns:androld="hup://schemas.androld.com/apk/res/androld" xmlns:Lools="hup://schemas.androld.com/Lools" androld:layouL_wldLh="maLch_parenL" androld:layouL_helghL="maLch_parenL" >
</8elauveLayouL> LA?Cu1 uene cmo se mosLrarn los elemenLos de la lnLerfaz grca. Ll uso adecuado de un LayouL permlur que la apllcacln se vlsuallce me[or Lenlendo en cuenLa que se esL Lraba[ando sobre panLallas de Lamano reducldo. LsLos son un upo de vlewCroup que permlLe conLener oLros ob[eLos vlew o vlewCroup. LlnearLayouL AbsoluLeLayouL 1ableLayouL 8elauveLayouL lrameLayouL Scrollvlew LlnearLayouL LsLe upo de LayouL ublca los componenLes de forma llneal (uno Lras oLro en las o col umnas). Su orl enLacl n puede ser horlzonLal o verucal. Pello Androld Pello Androld Pello Androld Pello Androld Pello Androld Pello Androld Pello Androld PLLLC Anu8Clu! <LlnearLayouL xmlns:androld="bup.//scbemos.ooJtolJ.com/opk/tes/ooJtolJ" xmlns:Lools="bup.//scbemos.ooJtolJ.com/tools" androld:layouL_wldLh="motcb_poteot" androld:layouL_helghL="motcb_poteot" Lools:conLexL=".MoloAcuvlty" >
</LlnearLayouL> AnLes que nada, el proyecLo por defecLo se encuenLra con un elemenLo rooL 8elauveLayouL, camblemos esLo por LlnearLayouL.
Aqul vemos el ob[eLo vlew con el LexLo Pello world!" y aunque la orlenLacln se ha esLablecldo como horlzonLal, no se aprecla dlcha caracLerlsuca debldo a que solo hay un ob[eLo que mosLrar. Agreguemos oLro elemenLo 1exLvlew denLo del mlsmo vlewCroup LlnearLayouL y deber aparecer a su derecha. PLLLC Anu8Clu! <LlnearLayouL xmlns:androld="bup.//scbemos.ooJtolJ.com/opk/tes/ooJtolJ" xmlns:Lools="bup.//scbemos.ooJtolJ.com/tools" androld:layouL_wldLh="motcb_poteot" androld:layouL_helghL="motcb_poteot" androld:orlenLauon="botlzootol" Lools:conLexL=".MoloAcuvlty" >
</LlnearLayouL> PLLLC Anu8Clu! PLLLC Anu8Clu! Se observa que e| e|emento root es <L| nearLayout> y en | hay 2 1extV|ews. L| e|emento L|nearLayout contro|a e| orden en e| cua| aparecen |os V|ews conten|dos en |. <LlnearLayouL xmlns:androld="bup.//scbemos.ooJtolJ.com/opk/tes/ooJtolJ" xmlns:Lools="bup.//scbemos.ooJtolJ.com/tools" androld:layouL_wldLh="motcb_poteot" androld:layouL_helghL="motcb_poteot" androld:orlenLauon="vetucol" Lools:conLexL=".MoloAcuvlty" >
</LlnearLayouL> LA?Cu1 & vlLW Cada vlew y vlewCroup poseen un con[unLo de aLrlbuLos comunes. Algunos apllcan solo para un upo especlco de LayouL Aur|bute Descr|pnon |ayout_w|dth Spec|hes the w|dth of the V|ew or V|ewGroup |ayout_he|ght Spec|hes the he|ght of the V|ew or V|ewGroup |ayout_marg|n1op Spec|hes extra space on the top s|de of the V|ew or V|ewGroup |ayout_marg|n8ouom Spec|hes extra space on the bouom s|de of the V|ew or V|ewGroup |ayout_marg|nLeh Spec|hes extra space on the |eh s|de of the V|ew or V|ewGroup |ayout_marg|nk|ght Spec|hes extra space on the r|ght s|de of the V|ew or V|ewGroup |ayout_grav|ty Spec|hes how ch||d V|ews are pos|noned |ayout_we|ght Spec|hes how much of the extra space |n the |ayout to be a||ocated to the V|ew |ayout_x Spec|hes the x-coord|nate of the V|ew or V|ewGroup |ayout_y Spec|hes the y-coord|nate of the V|ew or V|ewGroup LdlL1exL Los LdlL1exL son campos de LexLo lnLeracuvos en los cuales se puede modlcar por Leclado el LexLo que en ellos aparece. LdlL1exL <LlnearLayouL xmlns:androld="bup.//scbemos.ooJtolJ.com/opk/tes/ooJtolJ" xmlns:Lools="bup.//scbemos.ooJtolJ.com/tools" androld:layouL_wldLh="motcb_poteot" androld:layouL_helghL="motcb_poteot" androld:orlenLauon="vetucol" Lools:conLexL=".MoloAcuvlty" >
</LlnearLayouL> LA?Cu1 & vlLW ALrlbuLos Layout_w|dth: Lspeclca el ancho del vlew o vlewCroup Layout_he|ght: Lspeclca el alLo del vlew o vlewCroup
Ln el e[emplo anLerlor esLos aLrlbuLos se esLablecleron como wrap_conLenL" para ambos ob[eLos vlew. LsLe parmeLro especlca que su Lamano no va a ocupar ms del necesarlo para mosLrar el conLenldo (LexLo) LanLo a lo ancho (wldLh) como alLo (helghL).
una varlanLe para esLe parmeLro es ll_parenL" o maLch_parenL" el cual ocupa el ancho (wldLh) y/o alLo (helghL) de su padre que es el LlnearLayouL en esLe caso.
</LlnearLayouL> LdlL1exL Ln el e[emplo anLerlor usamos la propledad androld:LexL para esLablecer el LexLo que aparece en el componenLe. LsLe LexLo desaforLunadamenLe debe ser borrado por el usuarlo para poder escrlblr algo dlsunLo. una alLernauva es camblar esLa propledad por androld:hlnL la cual esLablece un LexLo que se muesLra al usuarlo (ms claro, como una marca de agua) dndole un lndlclo de la lnformacln que debe lngresar, una vez el usuarlo desee lngresar el LexLo que desea, el esLablecldo lnlclalmenLe desaparece auLomucamenLe. <LlnearLayouL xmlns:androld="bup.//scbemos.ooJtolJ.com/opk/tes/ooJtolJ" xmlns:Lools="bup.//scbemos.ooJtolJ.com/tools" androld:layouL_wldLh="motcb_poteot" androld:layouL_helghL="motcb_poteot" androld:orlenLauon="vetucol" Lools:conLexL=".MoloAcuvlty" >
</LlnearLayouL> LdlL1exL LdlL1exL Al pulsar una Lecla (x) 1exLo ms claro 1exLo ms oscuro 8uuon Los 8uuon son boLones o comandos lnLeracuvos con los cuales el usuarl o puede manl pul ar el comporLamlenLo de la apllcacln, ya sea para e[ecuLar alguna accln como por e[emplo un camblo de Acuvldad (panLalla). 8uuon Los 8uuon poseen aLrlbuLos al lgual que los ob[eLos 1exLvlew y LdlL1exL. Ln esLe caso vamos a esLablecer un Lamano [o en plxeles para esLe elemenLo de 120px de ancho, en cuanLo al alLo, esLe ser el necesarlo para mosLrar su conLenldo. <LlnearLayouL xmlns:androld="bup.//scbemos.ooJtolJ.com/opk/tes/ooJtolJ" xmlns:Lools="bup.//scbemos.ooJtolJ.com/tools" androld:layouL_wldLh="motcb_poteot" androld:layouL_helghL="motcb_poteot" androld:orlenLauon="vetucol" Lools:conLexL=".MoloAcuvlty" >
<8uuon androld:layouL_wldLh=120px" androld:layouL_helghL="wtop_cooteot" androld:LexL="8oto" /> </LlnearLayouL> 8uuon 120 px 240 px px=lxel LA?Cu1 & vlLW ALrlbuLos Layout_grav|ty: Lspeclca como los vlew hl[os van ser poslclonados
LsLe aLrlbuLo permlLe poslclonar el ob[eLo vlew en dlferenLes lugares de la panLalla, modlquemos el e[emplo anLerlor agregando esLe parmeLro al ob[eLo 8uuon para que lo ublque en el cenLro de la panLalla horlzonLalmenLe, para esLo el parmeLro ser "ceotet_botlzootol. LsLe aLrlbuLo solo funclonar sl la orlenLacln del LlnearLayouL ha sldo esLablecldo como verucal.
uC l1 ?Cu8SLLl! PasLa el momenLo, se han vlsLo dos upos de LA?Cu1 (Llnear & AbsoluLe) y Lres upos de vlLWS (1exLvlew, LdlL1exL & 8uuon). uesarrollar una panLalla de lnlclo de sesln en la que se sollclLe username & assword, la conLrasena debe ser de upo numerlco y deben vlsuallzarse punLos (*) en lugar de los numeros. ueben haber dos boLones, uno para sallr de la apllcacln (LxlL) y uno para lnlclar sesln (Logln). lovesuqot los ottlbotos lopot1ype y posswotJ poto el Jlt1ext lovesuqot el ottlboto loyoot_welqbt poto los Jos botooes
<LdlL1exL androld:layouL_wldLh="fll_poteot" androld:layouL_helghL="wtop_cooteot" androld:lnpuL1ype="text" /> </LlnearLayouL> <LlnearLayouL androld:layouL_wldLh="fll_poteot" androld:layouL_helghL="wtop_cooteot" > <1exLvlew androld:layouL_wldLh="wtop_cooteot" androld:layouL_helghL="wtop_cooteot" androld:LexL="losswotJ /> uC l1 ?Cu8SLLl! 1ableLayouL Ll 1ableLayouL agrupa los vlews en las y columnas. Cada la se puede adlclonar usando el elemenLo <1able8ow> y cada una de ellas puede conLener uno o mas vlews. or cada vlew que se adlclone a una la, se crear una nueva columna, o sea que cada vlew ocupa una celda de la Labla. Ll ancho de cada columna queda enLonces deLermlnado por el elemenLo (vlew/celda) ms grande. Check8ox LsLe upo de vlew es un elemenLo de chequeo que puede Lomar solo dos esLados (checked/ unchecked) o en su defecLo verdadero/falso. Ls muy uullzado en llsLas de seleccln muluple. osee aLrlbuLos al lgual que los vlsLos en vlews anLerlores como layouL_helghL layouL_wldLh, pero adlclonalmenLe, uno que esLablece su esLado lnlclal: checked que reclbe en forma de sLrlng Lrue" sl se desea que lnlcle selecclonado. Apllcacln Conunuando con el e[emplo anLerlor, se modlcar el LayouL de la panLalla de lnlclo de sesln a 1ableLayouL el cual conLendr 4 las, las dos prlmeras para username y assword, la Lercera para un Check8ox que permlLa ver o no el assword dlglLado y la uluma para los dos boLones. 1ableLayouL <1ableLayouL xmlns:androld="bup.//scbemos.ooJtolJ.com/opk/tes/ooJtolJ" xmlns:Lools="bup.//scbemos.ooJtolJ.com/tools" androld:layouL_wldLh="fll_poteot" androld:layouL_helghL="fll_poteot" androld:background="#000000" >
1ableLayouL PasLa el momenLo, nuesLras apllcaclones no poseen nlngun upo de evenLo que permlLa lnLeracLuar con vlews como 8uuons o en el e[emplo anLerlor con el Check8ox que a pesar de esLar selecclonado, no muesLra el password. Ms adelanLe se le aslgnarn acclones a esLos elemenLos. lu Los ob[eLos vlew pueden Lener aslgnado un lu unlco que los ldenuque. La slnLaxls para crear un nuevo ld denLro de una euqueLa xML es: androld:ld=[+ld/nombrelu"
ara un 8uuon Ck podrla ser:
androld:ld=[+ld/bLnCk"
lu Ll ob[eLo vlew puede ser ahora conocldo con ese lu LanLo en el documenLo .xML como en el .!ava esLo qulere declr que sl se desea modlcar alguna propledad de un vlew como por e[emplo el 1exLo, se puede hacer Lamblen programucamenLe.
Ll slmbolo (+) slgnlca que esLe es un nuevo nombre de recurso que debe ser creado y adlclonado al archlvo de recursos (8.[ava).
lu Cuando un vlew ha sldo denldo en xML, esLe puede ser referenclado por oLros componenLes de la slgulenLe forma:
[ld/bLnCk"
lu Se debe usar [+ la prlmera vez que se menclona el lu del ob[eLo en el archlvo xML. or e[emplo: Sl se crea un 1extvlew con: androld:ld=[+ld/LxLvwusername" ms adelanLe se puede referenclar como: [ld/LxLvwusername" pero sl se referencla por un ob[eLo anLes de que sea denldo, deber usarse en la referencla: [+ld/LxLvwusername" y ms adelanLe cuando sea creado su ld se denlr: androld:ld= [ld/LxLvwusername"
lu Los lu aunque son dados como cadenas de caracLeres (5ttloqs), en realldad es referenclado como un numero enLero.