Download - 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