lunes, 5 de marzo de 2012

6.6.1.Programación en Android:Menú de opciones


6.6.1.- Programación en Android – Menú de Opciones.

En anteriores capítulos realizamos un menú para realizar las selecciones del juego, pero esta no es la única forma de realizar un menú, y en android hay otros tipos de ellos. Entre estos otros tipos de menús están los menús contextuales y los menús de opciones.


Menús contextuales

Los menús contextuales son aquellos que aparecen cuando realizamos una pulsación larga sobre algún elemento visual. A veces estos menús se utilizan junto a los ListViews con objetos similares, como pueden ser listas de reproducción de canciones, listas de ficheros, etc. En estos casos el usuario podría realizar una pulsación larga sobre alguno de los elementos para desplegar un menú contextual que le permita otras opciones, como copiar, renombrar, borrar, mover ficheros, o añadir, quitar, borrar canciones a una lista, etc.

Menús de opciones

Los menús de opciones son los que se muestran cuando pulsamos la tecla menú del móvil o dispositivo con android. Están ligados a una actividad en concreto y normalmente se utilizan para permitir realizar cambios en la configuración, ayuda, etc.
Vamos a utilizar este menú para añadir un par de opciones a nuestra ActividadJuego.

Para añadir un menú de opciones a nuestra actividad, primero vamos a tener que crear un nuevo recurso, este recurso será del tipo menu, y estará ubicado dentro de la carpeta res/menu. Después de crearlo actualizaremos el código de la ActividadJuego para que lo muestre siempre que se pulse la tecla menú en el móvil.

Nos situamos dentro de la carpeta res y creamos otra subcarpeta llamada menu, y dentro de ella creamos un nuevo documento XML. Si lo hacemos pulsando con el botón derecho sobre este directorio y seleccionamos Nuevo->otras->[android] Android XML file, nos saldrá una ventana en la que podremos elegir el tipo de recurso (por defecto MENU), así como ponerle un nombre al fichero XML, que en este caso será: opcionesdejuego.xml. Después si editamos este recurso, nos aparecerá una ventana como la siguiente:


En “Menu Elements” es dónde van apareciendo los elementos a medida que los creamos, aquí son elementos individuales, pero también se pueden crear grupos de ellos, y en la ventana de la derecha aparecen las propiedades que le podemos cambiar.

Núm.
Descripción
1
Identificador de este elemento. Es el nombre que tendrá en el fichero de recursos.
2
Categoría del Menú. Se puede dejar vacío o elegir alguno de los siguientes códigos de categoría para el orden de elementos o grupos:
Alternative: Para los que son de acciones alternativas a los datos actualmente mostrados.
Container: Para los que son parte de un contenedor.
Secondary: Opciones secundarias para el usuario usadas muy pocas veces.
System: Opciones que nos provee el sistema.
3
Orden dentro de la categoría. Orden en el que se mostrarán.
4
Título que se mostrará cuando está en modo expandido.
5
Título que se mostrará cuando está en modo condensado.
6
Icono, en este caso apuntamos a los recursos internos de android. Para saber cuáles puedes tener disponibles, mira en la carpeta dónde está instalado el SDK de android, en data\res\drawable.
7
Atajo en el teclado alfanumérico para esta opción.
8
Atajo en el teclado numérico para esta opción.
9
Si el elemento (item) puede ser marcado o no.
10
Si el elemento está visible.
11
Si el elemento está habilitado. Puede estar visible, pero no poder seleccionarlo.


Para este ejemplo crearemos dos elementos, mitem_configuracion y mitem_ayuda. Podeis observar que también hemos creado un par de recursos de tipo string para poner el texto de los elementos, y hemos puesto el icono de ayuda (@android:drawable/ic_menu_help) asociado al elemento de ayuda, y para el de configuración utilizamos el icono (ic_menu_manage) que podéis encontrar en la carpeta que se ha indicado antes. También podíamos crear nuestros propios iconos, pero así se mantiene una consistencia visual con otras aplicaciones de android.
El orden podéis poner el que os de la gana.

Ahora seleccionamos el fichero de ActividadJuego.java, e implementamos el método onCreateOptionsMenu. (Código fuente->Alterar o implementar métodos).
Ahora vamos al cuerpo de este método y lo alteramos para incluir el siguiente código:
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
//Obtenemos las opciones para el menu:
getMenuInflater().inflate(R.menu.opcionesdejuego, menu);
//Ahora asociamos la ejecución de una actividad a la pulsación
// de un item determinado del menu de opciones.
// menu.findItem(R.id.mitem_ayuda)->Devuelve el objeto menu item // (o null si no lo hay)
// .setIntent(new Intent(this, ActividadMenu.class)-> Asocia el intent para dicha actividad

menu.findItem(R.id.mitem_configuracion).setIntent(
new Intent(this, ActividadConfiguracion.class));
menu.findItem(R.id.mitem_ayuda).setIntent(
new Intent(this, ActividadAyuda.class));

return true; //Para que se muestre el menú, ya que en caso
// de retornar false el menú no se muestra.


Bueno, creo que con los comentarios que hay en el código ya se puede entender el mismo. Lo que hemos hecho ha sido asociar un intent a la pulsación del elemento del menú. Éste método debe retornar un valor true ya que en caso contrario el menú no será mostrado.

En caso de que necesitemos ejecutar más código que una simple llamada a otra actividad, entonces debemos de implementar el método onOptionsItemSelected, y en él podemos implementar más código asociado a esa selección.

Ahora si ejecutáis el programa, y se selecciona el menú de juego, al pulsar en éste el botón de menú, nos aparecerán las opciones, y al seleccionar alguna se ejecutará la actividad correspondiente.



Ver. 1.0 – Revisión 05/03/2012

No hay comentarios:

Publicar un comentario