Tema 2: Diseño de servicios para móviles



Documentos relacionados
Interfaces de usuario [Desarrollo de aplicaciones para Android]

Aplicación para lista de tareas

Temas. CopyRight emmmnmmma - All rights reserved 2

PRACTICAS DE ANDROID 12 - Lanzar un segundo "Activity" y pasar parámetros Problema:

Diseño de interfaces gráficas. JOSE LUIS BERENGUEL GÓMEZ Febrero 2012

INTRODUCCIÓN.

Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java

Interfaz de usuario Layout Vistas Adaptadores Eventos de interacción Estilos y temas

Cursos de orientación profesional

1.- Creamos un proyecto al que llamaremos MusicaMovil.

Android UI. Darío Fernando Chamorro Vela Junio 2012

Programación en Android LSUB, GSYC, URJC

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE

Escuela Superior de Ingeniería

Android TAG y el principio DRY

SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE

Hola, Mundo con pretensiones

Android Creación de una aplicación sencilla: Forwarding - Página 1 -

Curso 12/13. Desarrollo de Aplicaciones Android. Persistencia

Taller Mi Primera Aplicación Android

Desarrollo de Aplicaciones para Android

Crear listas personalizadas en Android

14 - Almacenamiento de datos en un archivo de texto en la memoria interna Problema 1:

Definiciones. Tema 21_Módulos Menú 1

Desarrollo de Aplicaciones para Android

Curso PUDE. Desarrollo de Aplicaciones Móviles en Android

MODELO DE IMPLEMENTACIÓN

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Plataforma Android

Persistencia. Mecanismos de persistencia. Preferencias. Curso 12/13

Android Con Java. Ejercicio 2. Ciclo de Vida de las Actividades en Android. Ejercicio 2. Ciclo de Vida de las Actividades en Android

Proyecto Final de Carrera Ingeniería Informática

Plataforma Android. Sesión 4: Menús, listas y barras de progreso. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Introducción al manejo de Bases de Datos con SQLite. Version Android

Ejercicio 16. Mejora de Notificaciones en Android. Android Con Java. Ejercicio 16. Mejora de Notificaciones en Android. Curso de Android con Java

La funcionalidad básica es la del proyecto 1 (Pacman III). Sobre ella reemplazamos la interfaz de usuario para adaptarla al nuevo entorno

Programación Android. Alejandro Alcalde. elbauldelprogramador.com

Ejercicio: Mensajes Alert, Confirm y Prompt

Interfaces de usuario [Desarrollo de aplicaciones para Android]

Interfaces de usuario [Desarrollo de aplicaciones para Android]

Curso de programación en Android. 19/Junio/2012 Ramón Alcarria

Curso de introducción a Android

Almacenamiento de datos. JOSE LUIS BERENGUEL GÓMEZ Febrero 2012

Android y Java para Dispositivos Móviles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Parsear HTML con htmlparser para Android Guillem Pérez

Manual del Servicio Web. Afilnet.com. Afilnet. Servicios de Telecomunicaciones SMS

CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web

Programación: QBASIC

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Manejadores en Android LSUB, GYSC, URJC

Tutorial Enterprise Architect 7.5 Versión en español

Programando para Android: una sencilla aplicación

Objetivo de aprendizaje del tema

ANDROID INTERMEDIO - E-LEARNING - EN LÍNEA

Para este ejemplo vamos a crear el marco de aplicación que se presenta en la captura de pantalla siguiente:

ANEXO 2: Código fuente de la aplicación

Desarrollo de Aplicaciones para Android

Ejercicios - Servicios

ANDROID BÁSICO - E-LEARNING - EN LÍNEA

Desarrollo de Aplicaciones para Android

Almacenamiento en Android

CURSO INTERMEDIO DE PROGRAMACIÓN EN ANDROID

CONFIGURACIÓN WINDOWS VISTA

01 Índice. GESTOR DE CONTENIDOS Manual de uso 01 ÍNDICE OBJETO DEL DOCUMENTO ESTRUCTURA GRÁFICA DEL SISTEMA... 3

Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Ejercicios - Persistencia en Android: ficheros y SQLite

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Indicadores conceptos base EA constitución base Introducción a la programación de MT METATRADER, CONCEPTOS BÁSICOS DE PROGRAMACIÓN I

Introducción a Protégé

Administración Local Soluciones

Crear una Activity en Android. Paso por paso

Vamos a ver las dos formas básicas de arrancar PowerPoint.

Tema 2. El lenguaje de programación Java (Parte 1)

Manual del Servicio Web. Afilnet.com. Afilnet. Servicios de Telecomunicaciones SMS

Curso PUDE. Desarrollo de Aplicaciones Móviles en Android. A. Descripción. B. Implementación. B.1. Desarrollo de la primera interfaz

Ejercicio 18. Configuración de Widgets en Android. Android Con Java. Ejercicio 18. Configuración de Widgets en Android. Curso de Android con Java

NORMA (SEPA) 22/11/2013

Hola Android. Introducción al desarrollo de aplicaciones para Android

Combinar comentarios y cambios de varios documentos en un documento

Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences

NORMA 34.14(SEPA) 05/11/2013

PRESENTACIÓN TELEMÁTICA DE LIBROS

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

EDICIÓN Y FORMATO (II)

Look!: Framework para Aplicaciones de Realidad Aumentada en Android

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Administración Local Soluciones

Guía nuevo panel de clientes Hostalia

Creación de plugins para Apache Cordova. Parte JavaScript. Javier de Silóniz Sandino

Interfaces gráficas I

Ficheros Electrónicos

Tema: Arreglos de Objetos en C++.

Kaldeera Advanced Forms 2009 Guía del usuario

Integración de guia1 y guia2 utilizando la aplicación Mixare

Tutorial Correo Web UC

Transcripción:

Tema 2: Diseño de servicios para móviles Listas y menús 2013-2014 Depto. Ciencia de la Computación e IA

Puntos a tratar Spinners Listas Adaptadores Menús de opciones Menús contextuales 2

Spinner Cuadro de selección múltiple Pasos Añadir objeto Spinner al layout Datos a proporcionar Prompt Array de opciones Asignar array de opciones al Spinner 3

Definición del spinner Añadir objeto Spinner al layout <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawselectorontop="true" android:prompt="@string/eligeopcion" /> Cadena para el prompt en /res/values/strings.xml <string name="eligeopcion">elige!</string> 4

Opciones del spinner Array de opciones en /res/values/arrays.xml <resources> <string- array name="opciones"> <item>mensual</item> <item>trimestral</item> <item>semestral</item> <item>anual</item> </string- array> </resources> Asociar opciones al Spinner @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Adapta los datos a la vista Layout para la lista Spinner s = (Spinner) findviewbyid(r.id.spinner); ArrayAdapter adaptador = ArrayAdapter.createFromResource( this, R.array.opciones, android.r.layout.simple_spinner_item); adaptador.setdropdownviewresource( android.r.layout.simple_spinner_dropdown_item); s.setadapter(adaptador); Define el layout para cada item 5

Eventos del spinner No es posible asignar eventos a elementos individuales Manejador de eventos global Comprobaremos la posición pulsada spinner.setonitemselectedlistener(new OnItemSelectedListener() { public void onitemselected(adapterview<?> parent, View view, ); int pos, long id) { // Hacer algo public void onnothingselected(adapterview<?> parent) { // Hacer algo 6

Listas Elemento básico en las aplicaciones Vista ListView Actividad que herede de ListActivity Todas las funcionalidades de una actividad Funcionalidades para el manejo de listas Contiene un adaptador Inicializado con setlistadapter en oncreate Adaptadores Proporciona a la lista los datos a mostrar Vincula datos y vista en pantalla Subclase de BaseAdapter Adaptadores estándar: ArrayAdapter, CursorAdapter 7

Ejemplo de ListActivity Crear actividad como subclase de ListActivity No es necesario llamar a setcontentview public class MiLista extends ListActivity { public void oncreate(bundle icicle) { super.oncreate(icicle); La lista aparece vacía Debemos poblarla de datos mediante un adaptador 8

Adaptador de la lista Crear e inicializar un adaptador Al final del método oncreate Layout por defecto para los elementos de la lista: android.r.layout.simple_list_item_1 Asociamos el adaptador a la lista con setlistadapter String[] valores = new String[] {"C", "Java", "C++", "Python", "Perl", "PHP", "Haskell", "Eiffel", "Lisp", "Pascal", "Cobol", "Prolog"; ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1,valores); setlistadapter(adaptador); Vincula los elementos del array al layout indicado 9

Eventos de la lista Evento onlistitemclick Se invoca al pulsar sobre un elemento de la lista Nos proporciona el índice del elemento pulsado @Override protected void onlistitemclick(listview l, View v, int position, long id) { String elemento = (String)getListAdapter().getItem(position); Toast.makeText(this, elemento + " seleccionado", Toast.LENGTH_LONG).show(); El adaptador nos da acceso a los items de la lista 10

Tipos de listas Encontramos listas de selección única o múltiple ListView listview = getlistview(); // Selección múltiple: listview.setchoicemode(listview.choice_mode_multiple); // Selección única: listview.setchoicemode(listview.choice_mode_single); 11

Personalización de listas Podemos crear nuestro propio layout para los items de una lista Se define como cualquier layout xml ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, R.layout.layoutfila, R.id.etiqueta, valores); setlistadapter(adaptador); Layout para cada item de la lista Identificador de la vista donde mostrar el dato de cada fila Por ejemplo, nos permite incorporar un icono en cada elemento de la lista Para poblar los distintos elementos del layout con datos podemos utilizar un adaptador de tipo SimpleAdapter Permite vincular distintos datos a diferentes vistas del layout de cada fila 12

Adaptador personalizado (I) Podemos crear nuestro propio adaptador Nos permite personalizar cómo adaptar tipos de datos propios Ejemplo de tipo de datos propio: Tweet public class Tweet { String texto; String usuario; Bitmap imagen; Campos protegidos Getters y setters dan acceso a los campos protegidos public String gettexto() { return texto; public void settexto(string texto) { this.texto = texto;... 13

Adaptador personalizado (II) Definimos el layout para cada item Por ejemplo, en /res/layout/item.xml tvtitulo ivicono tvsubtitulo Ya sólo queda crear el adaptador para vincular cada Tweet al layout de cada item de la lista 14

Adaptador personalizado (III) public class TweetAdapter extends ArrayAdapter<Tweet> { public TweetAdapter(Context context, List<Tweet> objects) { super(context, R.id.tvTitulo, objects); @Override public View getview(int position, View convertview, ViewGroup parent) { if(convertview == null) { LayoutInflater li = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertview = li.inflate(r.layout.item, null); TextView tvtitulo = (TextView) convertview.findviewbyid(r.id.tvtitulo); TextView tvsubtitulo = (TextView) convertview.findviewbyid(r.id.tvsubtitulo); ImageView ivicono = (ImageView) convertview.findviewbyid(r.id.ivicono); Tweet tweet = this.getitem(position); tvtitulo.settext(tweet.gettexto()); tvsubtitulo.settext(tweet.getusuario()); Tipo especializado de array adapter para lista de tweets Devuelve la vista para el item de la lista en position Sólo crea la vista si no existiese previamente, en caso contrario sólo actualiza datos if(tweet.getimagen()!=null) { ivicono.setimagebitmap(tweet.getimagen()); else { ivicono.setimageresource(r.drawable.icon); Obtiene los datos para el item solicitado de la lista return convertview; 15

Menús Menú de opciones Iconos y texto Seis opciones como máximo (más opciones producirá un menú extendido) No muestra checkboxes, botones de radio o atajos Menú extendido Listado vertical con barra de scroll Opciones que no caben en el menú de iconos No muestra iconos, pero sí checkboxes, radio o atajos Submenú Ventana flotante No se permiten submenús anidados 16

Definición del menú Definimos las opciones del menú en XML Recurso de tipo menú (por ejemplo /res/menu/menu.xml) <?xml version="1.0" encoding="utf- 8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/itemagregar" android:icon="@drawable/ic_menu_agregar" android:title="@string/agregar_title"/> <item android:id="@+id/itemborrar" android:icon="@drawable/ic_menu_borrar" android:title="@string/borrar_title"/> <item android:id="@+id/itemver" android:icon="@drawable/ic_menu_ver" android:title="@string/ver_title"/> <item android:id="@+id/itemvolver" android:icon="@drawable/ic_menu_volver" android:showasaction="ifroom" android:title="@string/volver_title"/> </menu> Para cada opción definimos un identificador, un icono (drawable) y una etiqueta (string) Se muestra en el action bar de Android 3.0+ 17

Abrir el menú de opciones Sobrescribimos el método oncreateoptionsmenu de la actividad Crea la vista del menú @Override public boolean oncreateoptionsmenu(menu menu) { MenuInflater inflater = getmenuinflater(); inflater.inflate(r.menu.menu, menu); return true; Se invoca cuando pulsamos sobre la tecla MENU del móvil Debemos mostrar el menú definido en el XML anterior 18

Eventos del menú Cuando se pulse un botón del menú se avisará al método onoptionsitemselected de la actividad que mostró el menú Podemos sobrescribir este método para recibir los eventos @Override public boolean onoptionsitemselected(menuitem item) { // Seleccionado el item item.getitemid() return true; Podemos obtener el identificador del item pulsado con getitemid Se puede comparar con los identificadores definidos en el XML switch (item.getitemid()) { case R.id.itemAgregar:... break; case R.id.itemBorrar:... break; default: return super.onoptionitemselected(); 19

Menú contextual Podemos asociar un menú contextual a una vista Si mantenemos pulsada la vista 3 segundos aparece el menú Útil para opciones sobre items individuales de listas (editar, borrar) @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button vista = (Button)findViewById(R.id.boton); registerforcontextmenu(vista); Debemos registrar la vista sobre la que queramos que aparezca 20

Eventos del menú contextual Hacemos que aparezca el menú contextual @Override public void oncreatecontextmenu(contextmenu menu, View v, ContextMenu.ContextMenuInfo menuinfo) { super.oncreatecontextmenu(menu, v, menuinfo); menu.setheadertitle("menú contextual"); MenuInflater inflater = getmenuinflater(); inflater.inflate(r.menu.menu_contextual, menu); Respondemos a las pulsaciones de sus items @Override public boolean oncontextitemselected(menuitem item) { super.oncontextitemselected(item); [... hacer algo... ] return false; 21

Preguntas...? 22