Professional Documents
Culture Documents
ndice
Layouts
(ViewGroups)
Listas
(ListView)
y
adaptadores
Mens
11/7/11
Layouts
(ViewGroups)
LinearLayout
Es
el
Layout
ms
simple
Los
elementos
se
colocan,
o
bien
uno
debajo
del
otro
(orientation=vertical)
o
bien
uno
al
lado
del
otro
(orientation=horizontal)
11/7/11
Layouts(ViewGroups)
ScrollView
nicamente
puede
tener
UN
hijo
Lo
uXlizamos
porque
implementa
el
kineXc
scrolling
(el
scrolling
es
ms
o
menos
rpido
en
funcin
del
movimiento
del
dedo)
Podemos
poner
como
hijo
un
ViewGroup,
y
dentro
aadir
todas
las
View
que
queramos,
pero
debemos
tener
cuidado
11/7/11
Layouts
(ViewGroups)
FrameLayout
Los
elementos
se
colocan
a
parXr
de
la
esquina
superior
izquierda
No
podemos
especicar
una
posicin
disXnta
para
cada
View Las
Views
se
colocan
una
encima
de
la
otra
(debajo
las
primeras
View
que
aparecen
en
el
main.xml,
y
arriba
las
lXmas)
Xl
cuando
queremos
sobreponer
unas
Views
a
otras,
incluso
uXlizando
efectos
de
transparencia
11/7/11
Desarrollo
de
Aplicaciones
Mviles
en
Android
5
Layouts
(ViewGroups)
AbsoluteLayout
Su
uso
no
est
nada
recomendado
Permite
especicar
la
posicin
exacta
de
los
elementos,
luego
no
resulta
muy
re-uXlizable
a
menos
que
queramos
crear
una
UI
muy
especca
11/7/11
Layouts
(ViewGroups)
TableLayout
Est
compuesto
por
disXntos
elementos
de
Xpo
TableRow En
los
TableRow
podemos
colocar
tantas
Views
como
queramos
El
nmero
de
columnas
ser
el
nmero
de
hijos
mximo
de
entre
todos
los
TableRow El
ancho
de
las
columnas
ser
el
ancho
mnimo
necesario
entre
todos
los
hijos
de
todos
los
TableRow
No
es
posible
controlar
la
anchura
de
las
columnas,
la
ventaja
es
precisamente
sa,
que
es
automXco
S
podemos
aadir
separadores
en
horizontal
Desarrollo
de
Aplicaciones
Mviles
en
Android
7
11/7/11
Layouts
(ViewGroups)
RelativeLayout
Es
el
layout
ms
potente
de
todos
Se
recomienda
usarlo
siempre,
pues
evita
el
uso
de
otros
ViewGroups
dentro
del
ViewGroup
raz
Establece
la
posicin
de
los
elementos
dependiendo
de
la
posicin
de
otros
Dependiendo
de
la
versin
de
Android,
podemos
referenciar
elementos
antes
de
ser
declarados
porque
hace
2
pasadas
Es
el
mejor
layout,
pero
tambin
el
que
ms
errores
Xene,
y
el
que
ms
dolores
de
cabeza
da
Adems
de
esto,
tambin
permite
sobreponer
sus
elementos
Desarrollo
de
Aplicaciones
Mviles
en
Android
8
11/7/11
Layouts
(ViewGroups)
Eciencia
Hay
un
lmite
como
nmero
de
Views
que
puede
tener
una
acXvidad.
Si
se
sobrepasa,
se
cierra
la
acXvidad
La
UI
de
la
aplicacin
dibuja
un
rbol
(ver
HierarchyViewer),
donde
la
idea
es
que
ste
sea
todo
lo
ancho
que
queramos,
pero
lo
ms
bajo
posible
11/7/11
Layouts
(ViewGroups)
Hay
muchsimos
Layouts
por
descubrir
ViewFlipper,
SlidingDrawer,
Gallery,
etc.
Todos
Xenen
sus
peculiaridades
y
se
uXlizan
en
casos
especcos
Podemos
crear
nuestros
propios
Layouts
y
publicarlos,
o
buscar
otro
que
est
publicado
e
incluirlo
en
nuestras
aplicaciones
11/7/11
Desarrollo
de
Aplicaciones
Mviles
en
Android
10
ListView
Casi
toda
aplicacin
que
se
precie
necesita
hacer
uso
de
una
ListView Es
muy
importante
entender
su
funcionamiento,
y
comprender
por
qu
es
necesario
no
slo
que
sea
agradable
a
la
vista,
sino
que
tambin
sea
eciente
Podemos
tener
una
ListView
muy
simple,
donde
slo
se
muestra
un
dato
(por
ejemplo,
un
TextView
en
cada
elemento)
11/7/11
Desarrollo
de
Aplicaciones
Mviles
en
Android
11
ListView
Podemos
hacer
que
los
elementos
sean
complejos,
por
ejemplo,
un
RelativeLayout
con
CheckBox,
varios
TextViews,
un
ImageView
para
foto,
etc.
UXlizar
elementos
complejos
en
una
ListView
Xene
graves
consecuencias
a
la
hora
de
hacer
scrolling,
pues
se
Xene
que
crear
una
vista
por
cada
elemento
que
aparece
en
la
pantalla
07/04/2010
Desarrollo
de
Aplicaciones
Mviles
en
Android
12
ListView
Qu
necesita
una
ListView?
La
ListView
obXene
los
elementos
(Views)
a
mostrar
a
travs
de
un
Adapter.
Hay
dos
Xpos
principales
de
Adapters
(exXenden
de
BaseAdapter):
ArrayAdapter SimpleCursorAdapter
Podemos
extender
los
Adapter
para
darles
nuestro
propio
comportamiento,
y
uXlizarlos
para
mostrar
nuestros
datos
de
forma
intuiXva
11/7/11
Desarrollo
de
Aplicaciones
Mviles
en
Android
13
ListView
Qu
hace
el
Adapter?
Patrn
Adaptador
En
una
frase:
asla
al
ListView
de
los
datos
que
debe
mostrar
El
Adapter
se
encarga
de
recoger
los
datos
ListView
pregunta
a
su
Adapter
cuntos
datos
hay
que
mostrar
ListView
pide
a
su
Adapter
que
le
devuelva
qu
View
Xene
que
mostrar
para
el
objeto
i
11/7/11
Desarrollo
de
Aplicaciones
Mviles
en
Android
14
ListView
Qu
hace
el
Adapter?
Extendiendo
el
Adapter
podemos
mejorar
signicaXvamente
la
velocidad
de
un
ListView
complejo
Adems,
con
un
Adapter
personalizado,
podemos
darle
nuestro
propio
comportamiento
a
los
elementos
de
la
ListView
07/04/2010
15
ListView
Declaracin
XML
<ListView
android:id=@+id/myListView
android:layout_height=match_parent
android:layout_width=match_parent>
</ListView>
11/7/11
16
ListView
Asignar
contenido
basado
en
un
array
a
travs
de
un
ArrayAdapter:
ListView
myListView
=
(ListView)
ndViewById(R.id.myListView);
String
myStrings
=
{HTC,
Motorola,
Samsung,
Sony-Eriscsson,
Acer};
myListView.setListAdapter(new
ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
myStrings));
11/7/11
17
Mens
Dos
Xpos
de
mens
OpXons
Menu
(se
acciona
normalmente
con
el
botn
MENU)
Context
Menu
(se
acciona
normalmente
con
un
LongClick
de
un
elemento)
11/7/11
18
Mens
en
Android
Los
mens
son
una
parte
muy
importante
en
las
aplicaciones
mviles
Simplica
y
facilita
la
interaccin
con
el
usuario
El
uso
del
men
se
realiza
mediante
la
tecla
Men
de
los
disposiXvos
Android
07/04/2010
19
07/04/2010
21
Ejemplo
Men
/*
Creates
the
menu
items
*/
public
boolean
onCreateOpXonsMenu(Menu
menu)
{
menu.add(0,
MENU_NEW_GAME,
0,
"New
Game");
menu.add(0,
MENU_QUIT,
0,
"Quit");
return
true;
}
/*
Handles
item
selecXons
*/
public
boolean
onOpXonsItemSelected(MenuItem
item)
{
switch
(item.getItemId())
{
case
MENU_NEW_GAME:
newGame();
return
true;
case
MENU_QUIT:
quit();
return
true;
}
return
false;
}
07/04/2010
Desarrollo
de
Aplicaciones
Mviles
en
Android
22
07/04/2010
23
Submen
Se
pueden
crear
submens
en
cualquier
men,
excepto
en
otro
submen
Es
muy
Xl
cuando
nuestra
aplicacin
Xene
un
montn
de
funciones
agrupadas
por
temas
Ej.:
Archivo:
Abrir,
Guardar,
Guardar
como,
Un
submen
se
crea
aadindolo
en
un
men
ya
creado
con
addSubMenu() Devuelve
un
objeto SubMenu el
cual
es
una
extensin
de
Menu
07/04/2010
Desarrollo
de
Aplicaciones
Mviles
en
Android
24
Ejemplo
Submen
public
boolean
onCreateOpXonsMenu(Menu
menu)
{
boolean
result
=
super.onCreateOpXonsMenu(menu);
SubMenu
leMenu
=
menu.addSubMenu("File");
SubMenu
editMenu
=
menu.addSubMenu("Edit");
leMenu.add("new");
leMenu.add("open");
leMenu.add("save");
editMenu.add("undo");
editMenu.add("redo");
return
result;
}
07/04/2010
25
Modicando
el
Men
Algunas
veces
es
necesario
reescribir
las
opciones
del
men
cada
vez
que
se
ejecuta
el
mismo
Algunas
opciones
dependen
de
que
estn
acXvas
o
no
en
Xempo
de
ejecucin,
opciones
que
dependan
del
estado
actual
de
la
aplicacin
onPrepareOptionsMenu()
07/04/2010
Desarrollo
de
Aplicaciones
Mviles
en
Android
26
Ejemplo
@Override public boolean onPrepareOptionsMenu(Menu menu) { menu.removeItem(MENU_PREVIOUS_PAGE); menu.removeItem(MENU_NEXT_PAGE); menu.removeItem(MENU_SAVE_COMPLETE); menu.removeItem(MENU_SAVE_INCOMPLETE); menu.removeItem(MENU_JUMP_TO); menu.add(0, MENU_JUMP_TO, 0, "Ir a la pgina ...").setIcon( android.R.drawable.ic_menu_view).setEnabled(true); menu.add(0, MENU_PREVIOUS_PAGE, 0, "Previous Page").setIcon( android.R.drawable.ic_media_previous).setEnabled( viewFlipper.getDisplayedChild() != 0 ? true : false); menu.add(0, MENU_NEXT_PAGE, 0, "Next Page").setIcon( android.R.drawable.ic_media_next).setEnabled( viewFlipper.getDisplayedChild() != (viewFlipper.getChildCount()-1) ? true : false); menu.add(0, MENU_SAVE_COMPLETE, 0, "Save as Complete").setIcon( android.R.drawable.ic_menu_save).setEnabled(false); menu.add(0, MENU_SAVE_INCOMPLETE, 0, "Save as Incomplete").setIcon( android.R.drawable.ic_menu_save).setEnabled(false); return true; }
07/04/2010
27
Menus
Los
mens
pueden
ser
muy
complicados,
admiten
mucha
funcionalidad
Android
es
un
SO
que
se
acerca
a
los
PC,
permite
a
los
usuarios
decidir
qu
funcionalidad
desean
Debemos
intentar
que
los
mens
sean
intuiXvos
Mantener
los
mismos
criterios
a
lo
largo
de
toda
la
aplicacin,
y
no
alejarnos
demasiado
de
cmo
funciona
Android
11/7/11
Desarrollo
de
Aplicaciones
Mviles
en
Android
30