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