Clases Android

download Clases Android

of 28

Transcript of Clases Android

  • 7/23/2019 Clases Android

    1/28

    UNIVERSIDAD NACIONAL AMAZNICA DE MADRE DE DIOS

    PROGRAMACION DE APLICACIONES MOVILES II

    MATERIAL DE ESTUDIO - PRIMER EXAMEN PARCIAL

    Creacin de clases en a!a

    Java es un lenguaje orientado a objetos, donde casi todo se realizautilizando objetos. Por lo tanto va a resultar vital conocer cmo defnirclases de objetos de Java.

    Antes conviene defnir estos trminos:

    O"#e$%: entidad que dispone de unas propiedades (atributos !comportamiento (mtodos.

    Clase: defne un tipo de objeto concreto.Por ejemplo, si quisiramos escribir un programa en Java para gestionar loslibros de una biblioteca, crear"amos la clase #ibro, ! luego un objeto de estaclase, por cada libro que tengamos en la biblioteca.

    $na clase en Java est% &ormada por:

    A$ri"&$%s'(o campos'propiedades Almacenan algn tipo dein&ormacin del objeto. )efnen su estado.

    C%ns$r&c$%r(es)'*todo que se utiliza para inicializar un objeto.

    M*$%d%s'+on utilizados para modifcar o consultar el estado de unobjeto. quivalentes a las &unciones o procedimientos de otroslenguajes.

    NOTA:En Java solo hay dos excepciones al uso de objetos, adems deestos podemos utilizar variables simples y arrays. La forma de hacerlo esmuy similar a como lo haramos en C o C. En la si!uiente tabla semuestra una tabla con los tipos simples disponibles en Java.

    Para crear una nueva clase, lo primero que tienes que -acer es crear unfc-ero que -a de llamarse eactamente igual que la clase ! con etensin

    .java. /ecuerda, siempre un fc-ero por clase.

  • 7/23/2019 Clases Android

    2/28

    Al principio de este fc-ero se suele indicar el paquete al que pertenecer%esta clase. Por ejemplo:

    pac0age org.upv.cursoandroid.unidad12

    +eguido de otros paquetes defnidos previamente que queremos utilizar:

    import android.app.Activit!2

    import android.content.3roadcast/eceiver2

    import 4

    5mo las clases son agrupadas en paquetes ser% eplicado m%s tarde. )emomento no es imprescindible para trabajar con los primeros ejemplos.

    Para declarar una clase sigue el siguiente esquema:

    class 6clase7 8

    ''declaracin de atributos 9visibilidad 9modifcadores 6tipo7 6atributo7 9; valor2 ...

    ''declaracin de constructor public 6clase7(6argumentos7 8 6instrucciones72 ranscribe el complejo a +tring. = ?returnun string con la parte entera ! la imaginaria ='

    public +tring to+tring( 8 return real @ @@ imaginario @ i2 ree+et67(implementacin con %rbol

    Lis$asU estructura secuencial, donde cada elemento tiene un "ndice oposicin. +e utiliza el inter&az #ist67. Podemos utilizar las siguientesimplementaciones: Arra!#ist67 (acceso r%pido,#in0ed#ist67(inserciones'borrado r%pidas, +tac067 (pila, ector67(obsoleto

    Dicci%nari% % Ma$ri, as%cia$i!aU cada elemento tiene asociado unaclave que usaremos para recuperarlo. +e utiliza el inter&az *ap6V,7.Podemos utilizar las siguientes implementaciones: Tas-*ap6V,7,

    >ree*ap6V,7, #in0edTas-*ap6V,7

    n el siguiente diagrama se muestra las relaciones de -erencia entre losinter&aces ! clases m%s importantes en el &rameBor0 de las colecciones.

    5omo puede verse en el esquema anterior los inter&aces #ist67 ! +et67-eredan del inter&ace 5ollection67. A continuacin se enumeran losmtodos comunes a los inter&aces #ist67 ! +et67, que son recogidos enel inter&ace 5ollection. +upondremos que el elemento e es un objeto de laclase :

    "%%lean add( e: AIade un nuevo elemento al fnal de la lista."%%lean remove( e: limina la primera ocurrencia del elemento indicado.

  • 7/23/2019 Clases Android

    12/28

    "%%lean contains( e: 5omprueba si el elemento especifcado est% en lacoleccin.!%id clear(: limina todos los elementos de la coleccin.in$ size(: )evuelve el nmero de elementos en la coleccin."%%lean ismpt!(5ollection6W7 c: 5omprueba si la coleccin est% vac"a.

    #os siguientes mtodos combinan dos colecciones:

    "%%lean addAll(5ollection6W7 c: AIade todos los elementos de lacoleccin c."%%lean removeAll(5ollection6W7 c: limina todos los elementos de c."%%lean containsAll(5ollection6W7 c: 5omprueba si coinciden lascolecciones."%%leanretainAll(5ollection6W7 c: limina todos los elementos a no serque estn en c. (obtiene la interseccin.

    C%n#&n$%s

    #os conjuntos son estructuras de datos donde los elementos no tienen unorden ! no se permiten duplicados. Para defnirlos se utiliza la inter&az+et67, que no aIade nuevos mtodos a la inter&az 5ollection67. Por lotanto, con los mtodos anteriores podr%s manipular tus conjuntos.

    Podemos utilizar di&erentes implementaciones. #a m%s efciente esTas-+et67 (implementacin con tabla -as-. Pero si queremos que loselementos queden ordenados podemos usar >ree+et67 (implementacincon %rbol.

    l siguiente ejemplo muestra cmo crear un conjunto de +trings ! luegorecorrerlo para mostrarlo en consola:

    +et conjunto ; neB Tas-+et(2 conjunto.add(manzana2conjunto.add(pera2conjunto.add(&resa2conjunto.add(naranja2conjunto.remove(pera2&or(+tring s : conjunto 8

    +!stem.out.println(s2etieBandroid:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontent android:tet;?string'-elloQBorld '7

    6'/elative#a!out7

    NOTA:Cuando haces doble clic en el explorador del proyecto sobreactivitymain.xml, probablemente lo abra en modo !r-co. $ara verlo enmodo texto selecciona la pesta)a %ext enAndroid Studio oactivitymain.xml en Eclipse.

    /esulta sencillo interpretar su signifcado. +e introduce un elemento detipo /elative#a!out, como se estudiar% m%s adelante su &uncin es contenerotros elementos de tipo ieB. ste /elative#a!out tiene cinco atributos. #os

    dos primeros, mlns:android,! mlns:tools son declaraciones de espaciosde nombres de \*# que utilizaremos en este fc-ero (este tipo de par%metrosolo es necesario especifcarlo en el primer elemento. #os dos siguientespermiten defnir el anc-o ! alto de la vista. n el ejemplo se ocupar% todo elespacio disponible. l ltimo atributo indica la actividad asociada a esteLayout.

    )entro del /elative#a!out solo tenemos un elemento de tipo >etieB. stedispone de tres atributos. #os dos primeros defnen el anc-o ! alto (seajustar% al teto contenido. l ltimo indica el teto a mostrar. Mo se -aindicado un teto directamente sino una re&erencia, ?string'-elloQBorld.

    sta re&erencia -a de estar defnida en el fc-ero res+values+strin!s.xml. +iabres este fc-ero, tienes el siguiente contenido:

    6Wml version;D.1 encoding;ut&C]W76resources7 6string name;appQname7Tola *undo6'string7 6string name;-elloQBorld7Tello Borld6'string7 6string name;actionQsettings7+ettings6'string76'resources7

    sta es la pr%ctica recomendada en Android para la insercin de tetos en

    tu aplicacin, dado que &acilita su localizacin a la -ora de realizar latraduccin a otros idiomas. s decir, utilizaremos los fc-eros layoutpara

  • 7/23/2019 Clases Android

    17/28

    introducir el diseIo de los inter&aces ! el fc-ero strin!s para introducir lostetos utilizados en los distintos idiomas.

    Edicin !is&al de las !is$as

    eamos a-ora como editar los la!outs o fc-eros de diseIo en \*#. n el

    eplorador del pro!ecto abre el fc-ero res'la!out'activit!Qmain.ml. er%sque en la parte in&erior de la ventana central aparecen dos leng^etas:)esign ! >et en Android +tudio2 Lrap-ical #a!out ! activit!Qmain.ml enclipse. Podr%s usar dos tipos de diseIo: editar directamente el cdigo \*#(segunda leng^eta o realizar este diseIo de &orma visual (primeraleng^eta.

    R en clipse:

    n el marco derec-o se visualiza una lista con todos los elementos della!out. ste la!out tiene solo dos vistas: un /elative#a!out conteniendo un

    >etieB. n este momento solo -a! dos un /elative#a!outque contiene un

    >etieB. n el marco central aparece una representacin de cmo se ver%el resultado. n la parte superior aparecen varios controles pararepresentar esta vista en di&erentes confguraciones. 5uando diseIamos unavista en Android, -a! que tener en cuenta que desconocemos el dispositivofnal donde ser% visualizada ! la confguracin espec"fca elegida por elusuario. Por esta razn, resulta importante que verifques que la vista se vede &orma adecuada en cualquier confguracin. n la parte superior, deizquierda a derec-a, encontramos los siguientes botones: opciones deprevisualizacin en &ase de diseIo, tipo de dispositivo (tamaIo ! resolucinde la pantalla, orientacin -orizontal (landscape o vertical (portrait, cmose ver% nuestra vista tras aplicar un tema, la actividad asociada, laconfguracin regional (locale, la versin de Android.

    Para editar un elemento, seleccinalo en el marco de la derec-a (Nutline opinc-a directamente sobre l en la ventana de previsualizacin. Alseleccionarlo, puedes modifcar alguna de sus propiedades en el marcoProperties, situado debajo de Nutline. c-a un vistazo a las propiedadesdisponibles para >etieB ! modifca alguna de ellas. n muc-os casos teaparecer% un desplegable con las opciones disponibles.

    l marco de la izquierda te permite insertar de &orma r%pida nuevas vistas alla!out. Puedes arrastrar cualquier elemento a la ventana de previsualizacin

    o al marco Nutline.La+%&$s

    +i queremos combinar varios elementos de tipo vista tendremos que utilizarun objeto de tipo Layout. $n Layoutes un contenedor de una o m%s vistas !controla su comportamiento ! posicin. Ta! que destacar que un Layoutpuede contener a otro Layout! que es un descendiente de la clase &ie'.

    #a siguiente lista describe los Layoutm%s utilizados en Android:

    LinearLayout: )ispone los elementos en una fla o en una columna.

    TableLayout: )istribu!e los elementos de &orma tabular.elativeLayout: )ispone los elementos en relacin a otro o al padre.

  • 7/23/2019 Clases Android

    18/28

    AbsoluteLayout: Posiciona los elementos de &orma absoluta.

    !ra"eLayout: Permite el cambio din%mico de los elementos que contiene.

    )ado que un ejemplo vale m%s que mil palabras, pasemos a mostrar cadauno de estos layoutsen accin:

    LinearLayout es uno de los Layoutm%s utilizado en la pr%ctica. )istribu!elos elementos uno detr%s de otro, bien de &orma -orizontal o vertical.

    6#inear#a!out mlns:android;-ttp:''... android:la!outQ-eig-t;matc-Qparent

    android:la!outQBidt-;matc-Qparent android:orientation ;vertical7

    6Analog5loc0android:la!outQBidt-;BrapQcontentandroid:la!outQ-eig-t;BrapQcontent'7

    65-ec03o android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontent android:tet;$n c-ec03o'7 63utton android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontentandroid:tet;$n botn'7

    6>etieBandroid:la!outQBidt-;BrapQcontent android:la!outQ-eig-t;BrapQcontent

    android:tet;$n teto cualquiera'76'#inear#a!out7

    TableLayoutdistribu!e los elementos de &orma tabular. +e utiliza laetiqueta 6>able/oB7 cada vez que queremos insertar una nueva l"nea.

  • 7/23/2019 Clases Android

    19/28

    6>able#a!out mlns:android;Z-ttp:''...

    android:la!outQ-eig-t;matc-Qparent android:la!outQBidt-;matc-Qparent7 6>able/oB7 6Analog5loc0

    android:la!outQBidt-;BrapQcontentandroid:la!outQ-eig-t;BrapQcontent'7

    65-ec03o android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontentandroid:tet;$n c-ec03o'7

    6'>able/oB7

    6>able/oB7 63utton android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontentandroid:tet;$n botn'7

    6>etieBandroid:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontentandroid:tet;$n teto cualquiera'7

    6'>able/oB76'>able#a!out7

    elativeLayout permite comenzar a situar los elementos en cualquiera delos cuatro lados del contenedor e ir aIadiendo nuevos elementos pegados aestos.

  • 7/23/2019 Clases Android

    20/28

    6/elative#a!out mlns:android;-ttp:''sc-emas... android:la!outQ-eig-t;matc-Qparent

    android:la!outQBidt-;matc-Qparent7 6Analog5loc0 android:id;?@id'Analog5loc01D android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontent android:la!outQalignParent>op;true'7 65-ec03o android:id;?@id'5-ec03o1D android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontent android:la!outQbeloB;?@id'Analog5loc01D

    android:tet;$n c-ec03o'7 63utton android:id;?@id'3utton1D

    android:la!outQBidt-;BrapQcontentandroid:la!outQ-eig-t;BrapQcontentandroid:tet;$n botn

    android:la!outQbeloB;?@id'5-ec03o1D'7 6>etieB android:id;?@id'>etieB1D

    android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontentandroid:la!outQalignParent3ottom;true android:tet;$n teto cualquiera'76'/elative#a!out7

    AbsoluteLayout permite indicar las coordenadas (,! donde queremosque se visualice cada elemento. Mo es recomendable utilizar este tipo deLayout. #a aplicacin que estamos diseIando tiene que visualizarsecorrectamente en dispositivos con cualquier tamaIo de pantalla. Paraconseguir esto, no es una buena idea trabajar con coordenadas absolutas.)e -ec-o, este tipo de Layout-a sido marcado como obsoleto.

  • 7/23/2019 Clases Android

    21/28

    6Absolute#a!out mlns:android;-ttp:''sc-emas.android:la!outQ-eig-t;matc-Qparent

    android:la!outQBidt-;matc-Qparent7 6Analog5loc0

    android:la!outQBidt-;BrapQcontentandroid:la!outQ-eig-t;BrapQcontent

    android:la!outQ;E1p android:la!outQ!;E1p'7 65-ec03o android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontent android:tet;$n c-ec03o android:la!outQ;DE1p

    android:la!outQ!;E1p'7 63utton android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontentandroid:tet;$n botn

    android:la!outQ;E1p android:la!outQ!;GE1p'7 6>etieB android:la!outQBidt-;BrapQcontent android:la!outQ-eig-t;BrapQcontent

    android:tet;$n teto cualquiera

    android:la!outQ;DE1p android:la!outQ!;G11p'76'Absolute#a!out7

    !ra"eLayout posiciona las vistas usando todo el contenedor, sindistribuirlas espacialmente. ste Layoutsuele utilizarse cuando queremosque varias vistas ocupen un mismo lugar. Podemos -acer que solo una seavisible, o superponerlas.Para modifcar la visibilidad de un elementoutilizaremos la propiedad visibility.

  • 7/23/2019 Clases Android

    22/28

    6[rame#a!out mlns:android;-ttp:''sc-emas...

    android:la!outQ-eig-t;mac-Qparentandroid:la!outQBidt-;matc-Qparent7 6Analog5loc0 android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontent'7 65-ec03o android:la!outQBidt-;BrapQcontent android:la!outQ-eig-t;BrapQcontent android:tet;$n c-ec03o'7 63utton android:la!outQBidt-;BrapQcontent

    android:la!outQ-eig-t;BrapQcontent android:tet;$n botn android:visibilit!;invisible'7 6>etieB

    android:la!outQBidt-;BrapQcontent android:la!outQ-eig-t;BrapQcontent android:tet;$n teto cualquiera android:visibilit!;invisible'76'[rame#a!out7

    Rec&rs%s al$erna$i!%s$na aplicacin Android va a poder ser ejecutada en una gran variedad dedispositivos. l tamaIo de pantalla, la resolucin o el tipo de entradas puedevariar muc-o de un dispositivo a otro. Por otra parte, nuestra aplicacin -ade estar preparada para di&erentes modos de &uncionamiento, como elmodo YautomvilZ o el modo Ynoc-eZ, ! para poder ejecutarse en di&erentesidiomas.

    A la -ora de crear la inter&az de usuario, -emos de tener en cuenta todasestas circunstancias. A&ortunadamente, la plata&orma Android nosproporciona una -erramienta de gran potencia para resolver este problema:

    el uso de los recursos alternativos.

  • 7/23/2019 Clases Android

    23/28

    Ti.%s de rec&rs%s

    #a defnicin de los recursos en Android es un aspecto mu! importante en eldiseIo de una aplicacin. $na de sus principales ventajas es que &acilita alos diseIadores gr%fcos e introductores de contenido trabajar en paralelocon los programadores.

    AIadir un recurso a nuestra aplicacin es mu! sencillo, no tenemos m%s queaIadir un fc-ero dentro de una carpeta determinada de nuestro pro!ecto.Para cada uno de los recursos que aIadamos el sistema crea, de &ormaautom%tica, un id de recurso dentro de la clase /.

    Ti.%s de rec&rs%s

    +egn la carpeta que utilicemos el recurso creado ser% de un tipo espec"fco.Pasamos a enumerar las carpetas ! tipos posibles:

    car.e$aiden$i3cad%r

    Descri.cin

    res'draBable'/.draBable

    [ic-eros en bitmap (.png, .jpg o .gi&. [ic-eros PML en&ormato MineCpatc- (._.png. [ic-eros \*# con descriptoresgr%fcos (ver clase )raBable

    res'la!out'/.la!out

    [ic-eros \*# con los #a!outs usados en la aplicacin.

    res'menu'/.menu [ic-eros \*# con la defnicin de mens. Podemos asignaruna actividad o una vista.

    res'anim'/.anim

    [ic-ero \*# que permiten defnir unas animaciones >Beentambin conocidas como animaciones de vista.

    res'animator/.animator

    [ic-eros \*# que permiten modifcar las propiedades de unobjeto a lo largo del tiempo. er seccin: animacin depropiedades. +olo desde la versin F.1.

    res'ml'/.ml

    Ntros fc-eros \*#, como los fc-eros de pre&erencias

    res'raB'/.raB

    [ic-eros que se encuentran en &ormato binario. Por ejemplofc-eros de audio o v"deo.

    res'values'[ic-eros \*# que defnen un determinado valor para defnirun color, estilo, cadena de caracteres, etc. +e describen enla siguiente tabla.

    eamos los tipos de recursos que encontramos dentro de la carpeta values:

    3c?er% .%rde0ec$% Descri.cin

  • 7/23/2019 Clases Android

    24/28

    iden$i3cad%r

    strings.ml/.string

    Kdentifca cadenas de caracteres

    6string name;saludo7OTola *undo6'string7

    colors.ml/.color

    $n color defnido en &ormato A/L3 (al&a, rojo, verde ! azul.#os valores se indican en -eadecimal en uno de lossiguientes &ormatos: `/L3, `A/L3, `//LL33 `AA//LL33

    6color name;verdeQopaco7`1&16'color76color name;redQtranslucido7`]111116'color7

    dimensions.

    ml/.dimen

    $n nmero seguido de una unidad de medida.

    p C pieles, mm C mil"metros, in U pulgadas, pt U puntos(;D'G pulgadas, dp U p"eles independientes de la

    densidad (;D'D1 pulgadas, sp U igual que dp pero cambiasegn las pre&erencias de tamaIo de &uente.

    6dimen name;alto7G.Gmm6'dimen76dimen name;tamanoQ&uente7Dsp6'dimen7

    st!les.ml/.st!le

    )efnen una serie de atributos que pueden ser aplicados auna vista o a una actividad. +i se aplican a una actividad seconocen como temas.

    6st!le name;>etoLrande parent;?st!le'>et76item name;android:tet+ize7G1pt6'item7

    6item name;android:tet5olor7`1111]16'item76'st!le7

    /.int)efne un valor entero.

    6integer name;maQasteroides7E6'integer7

    /.bool)efne un valor booleano.

    6bool name;misilesQilimitados7true6'bool7

    /.id

    )efne un recurso de K) nico. #a &orma -abitual de asignar

    K) a los recursos es utilizando el atributoid>Fidn%/"re. Aunque en algunos casos puede serinteresante disponer de K)s previamente creados, para quelos elementos as" nombrados tengan una determinada&uncin. ste tipo de id se utiliza en las vistas >abTost !#istieB.

    6item t!pe;id name;buttonQo0'76item t!pe;id name;dialogQeit'7

    /.arra! $na serie ordenada de elementos. Pueden ser de strings,de enteros o de recursos (>!pedArra!

    6stringCarra! name;diasQsemana7 6

  • 7/23/2019 Clases Android

    25/28

    6item7lunes6'item7 6item7martes6'item76'stringCarra!7

    6integerCarra! name;primos7

    6item7G6'item76item7F6'item76item7E6'item76'integerCarra!76arra! name;asteroides76item7?draBable'asteroideD6'item76item7?draBable'asteroideG6'item7

    6'arra!7

    Aunque el sistema crea fc-eros que aparecen en la columna de la izquierdade la tabla anterior ! se recomienda defnir los recursos de cadena dentrode strin!s.xml, -a! que resaltar que no es m%s que una sugerencia de

    organizacin. +er"a posible mezclar cualquier tipo de recurso de esta tabladentro de un mismo fc-ero ! poner a este fc-ero cualquier nombre.

    Acces% a l%s rec&rs%s

    $na vez defnido un recurso este puede ser utilizado desde un fc-ero \*# odesde Java. A continuacin se muestra un ejemplo desde \*#:

    6KmageieB

    android:la!outQ-eig-t;?dimen'altoandroid:la!outQBidt-;matc-Qparentandroid:bac0ground;?draBable'asteroideandroid:tet;?string'saludoandroid:tetQcolor;?color'verdeQopaco'7

    Para acceder a un recurso defnido en los ejemplos anteriores desde Javausaremos el siguiente cdigo:

    /esources res ;get/esources(2)raBable draBable ;res.get)raBable(/.draBable.asteroide2+tring saludo ; res.get+tring(/.string.saludo2int color ;res.get5olor(/.color.verdeQopaco2Soat tamano[uente ;res.get)imension(/.dimen.tamanoQ&uente2

    int maAsteroides ;res.getKnteger(/.integer.maQasteroides2boolean ilimitados ; res.get3oolean(/.bool.misilesQilimitados2+tring9 dias+emana ;res.get+tringArra!(/.arra!.diasQsemana2int9 primos ;res.getKntArra!(/.arra!.primos2

    >!pedArra! asteroides ;res.obtain>!pedArra!(/.arra!.asteroides2)raBable asteroideD ;asteroides.get)raBable(12

    Rec&rs%s del sis$e/a

    Adem%s de los recursos que podamos aIadir a nuestra aplicacin, tambin

    podemos utilizar una serie de recursos que -an sido incluidos en el sistema.

  • 7/23/2019 Clases Android

    26/28

    $sar recursos del sistema tiene muc-as ventajas. Mo consumen memoria ennuestra aplicacin, al estar !a incorporados al sistema. Adem%s los usuariosest%n &amiliarizados con ellos. Por ejemplo, si utilizamos el recursoandroid./.draBable.icQmenuQedit se mostrar% al usuario el icono: . *u!posiblemente el usuario !a est% &amiliarizado con este icono ! lo asocie a la

    accin de editar. Ntra ventaja es que los recursos del sistema se adaptan alas di&erentes versiones de Android. +i se utiliza el temaandroid./.st!le.>-emeQPanel este es bastante di&erente en cada una de lasversiones, pero seguro que estar% en consonancia con el resto de estilospara esta versin. #o mismo ocurre con el icono anterior. ste icono esdi&erente en algunas versiones, pero al usar un recurso del sistema nosaseguramos que se mostrar% el adecuado a la versin del usuario.[inalmente, estos recursos se adaptan siempre a las confguracioneslocales. +i !o utilizo el recurso android./.string.cancel este ser% Y5ancelarZ,Y5ancelZ, Y,... segn el idioma escogido por el usuario.

    Nbtener una lista con los recursos del sistema disponible no es sencillo.>e recomendamos que instales la aplicacin#ndroid.en cualquierdispositivo para eplorar los recursos del sistema.

    Para acceder a los recursos del sistema desde cdigo usaremos la claseandroid./. +e utiliza la misma estructura de jer%rquica de clases. Porejemplo android./.draBable.icQmenuQedit. Para acceder desde \*# utiliza lasintais -abitual pero comenzando con ?android:. Por ejemplo?android:draBable'icQmenuQedit.

    Es$il%s + $e/as

    +i tienes eperiencia con el diseIo de p%ginas Beb, -abr%s advertidograndes similitudes entre T>*# ! el diseIo de layouts. n los dos casos seutiliza un lenguaje de marcado ! se trata de crear diseIos independientesdel tamaIo de la pantalla donde se visualizar%n. n el diseIo Beb resultanclave las -ojas de estilo en cascada (5++, que permiten crear un patrn dediseIo ! aplicarlo a varias p%ginas. 5uando diseIes los layoutsde tuaplicacin, vas a poder utilizar unas -erramientas similares conocidas comoestilos ! temas. >e permitir%n crear patrones de estilo que podr%n serutilizados en cualquier parte de la aplicacin. stas -erramientas tea-orrar%n muc-o trabajo ! te permitir%n conseguir un diseIo -omogneo en

    toda tu aplicacin.

  • 7/23/2019 Clases Android

    27/28

    L%s es$il%s

    $n estilo es una coleccin de propiedades que defnen el &ormato !apariencia que tendr% una vista. Podemos especifcar cosas como tamaIo,m%rgenes, color, &uentes, etc. $n estilo se defne en fc-eros \*#, di&erenteal fc-ero \*# Layoutque lo utiliza.

    eamos un ejemplo. l siguiente cdigo:

    6>etieB android:la!outQBidt-;matc-Qparent android:la!outQ-eig-t;BrapQcontent android:tet5olor;`11[[11 android:t!pe&ace;monospace android:tet;$n teto '7

    s equivalente a escribir:

    6>etieB st!le;?st!le'*istilo android:tet;$n teto '7

    Tabiendo creado en el fc-ero res+values+styles.xmlconel siguiente cdigo:

    6Wml version;D.1 encoding;ut&C]W76resources7 6st!le name;*istilo parent;?android:st!le'>etAppearance.*edium7 6item name;android:la!outQBidt-7matc-Qparent6'item7

    6item name;android:la!outQ-eig-t7BrapQcontent6'item7 6item name;android:tet5olor7`11[[116'item7 6item name;android:t!pe&ace7monospace6'item7 6'st!le76'resources7

    Nbserva como un estilo puede -eredar todas las propiedades de un padre(par%metro parent ! a partir de estas propiedades realizar modifcaciones.

    1eredar de &n es$il% .r%.i%

    +i vas a -eredar de un estilo defnido por ti no es necesario utilizar el

    atributo parent. Por el contrario, puedes utilizar el mismo nombre de unestilo !a creado ! completar el nombre con un punto m%s un sufjo.Porejemplo:

    6st!le name;*istilo.grande7 6item name;android:tet+ize7D]pt6'item76'st!le7

    5rear"a un nuevo estilo que ser"a igual a *istilo m%s la nueva propiedadindicada. A su vez puedes defnir otro estilo a partir de este:

    6st!le name;*istilo.grande.negrita7 6item name;android:tet+t!le7bold6'item76'st!le7

  • 7/23/2019 Clases Android

    28/28

    L%s $e/as

    $n tema es un estilo aplicado a toda una actividad o aplicacin, en lugar dea una vista individual. 5ada elemento del estilo solo se aplicar% a aquellos

    elementos donde sea posible. Por ejemplo, 5ode[ont solo a&ectar% al teto.Para aplicar un tema a toda una aplicacin edita elfc-ero#ndroid"anifest.xml! aIade el par%metro android:t-eme en laetiqueta 6application7:

    6application android:t-eme;?st!le'*i>ema7

    >ambin puedes aplicar un tema a una actividad en concreto:

    6activit! android:t-eme;?st!le'*i>ema7

    Adem%s de crear tus propios temas vas a poder utilizar algunos disponibles

    en el sistema. Puedes encontrar una lista de todos los estilos ! temasdisponibles en Androiden:-ttp:''developer.android.com're&erence'android'/.st!le.-tml

    http://developer.android.com/reference/android/R.style.htmlhttp://developer.android.com/reference/android/R.style.html