You are on page 1of 30

Desarrollo

de Aplicaciones Mviles en Android


Profesorado: Jorge E. Carballo Franquis David D. Harjani Harjani Director: Jos Luis Roda

ndice
Layouts (ViewGroups) Listas (ListView) y adaptadores Mens

11/7/11

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

15

ListView
Declaracin XML
<ListView android:id=@+id/myListView android:layout_height=match_parent android:layout_width=match_parent> </ListView>

11/7/11

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

19

Creacin de Opciones en el Men


Los elementos del men se crean con onCreateOptionsMenu() Para crear un nico elemento MenuItem en el men uXlizamos el mtodo add() de la clase Menu Pasndole:
ID de grupo ID Orden Texto (o referencia al recurso)
07/04/2010 Desarrollo de Aplicaciones Mviles en Android 20

Seleccin de opcin en el Men


Cuando se selecciona una opcin en el men, se realiza una llamada al mtodo onOptionItemsSelected() de nuestra acXvidad Pasndole el MenuItem seleccionado, el cual se idenXca mediante getItemId() retornando el entero asignado en el mtodo add()

07/04/2010

Desarrollo de Aplicaciones Mviles en Android

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

Aadiendo Iconos al Men


Podemos insertar iconos a las opciones del men, mediante el mtodo setIcon()
menu.add(0, MENU_QUIT, 0, "Quit") .setIcon(R.drawable.menu_quit_icon);

07/04/2010

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

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

Desarrollo de Aplicaciones Mviles en Android

27

Menus / OpXons Menus


En los mens hay un mximo de 6 elementos Si superamos el mximo de 6, el lXmo elemento se convierte en un enlace a una lista que conXene el resto Para los 6 primeros elementos ( 5 si hay ms de 6) podemos mostrar un icono Android provee de iconos para operaciones estndares (aadir, guardar, borrar, opciones, etc.)
11/7/11 Desarrollo de Aplicaciones Mviles en Android 28

Menus / OpXons Menu


Los iconos ms importantes se suelen colocar arriba a la izquierda Los menos importantes abajo a la derecha Solamente puede haber un men de opciones por AcXvidad Nosotros recomendamos aadir en la primera AcXvidad de las aplicaciones una opcin Exit, aunque a Google no le gusta
11/7/11 Desarrollo de Aplicaciones Mviles en Android 29

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

You might also like