Desarrollo en Android T13 - Menús
Los menús en Android permiten mostrar opciones al usuario de una forma rápida, además de que están invisibles en el activity y se accede a ellos por los tres puntos que aparecen en la pantalla, o en el botón físico menú presente en algunos dispositivos y versiones de Android.
En este tutorial se mostrará una forma para crear menús y asignar tareas a cada una de las opciones o items que contenga.
1. Para diseñar un menú se puede hacer de dos formas, en tiempo de diseño utilizando un archivo de configuración XML o en tiempo de ejecución agregándolo directamente con código Java.
En este ejemplo se hará de las dos formas, comenzando con un recurso de menú, para esto se hace clic derecho en la carpeta res + New + Android resource file, con lo que se abrirá un cuadro de dialogo.
2. En la ventana que se muestra a continuación se le da un nombre al menú que se va a crear, en este caso menu_main, y en Resource type: se elige Menu, y se hace click en Ok, con esto se crea un archivo XML donde se agregan los items necesarios.
3. Los parámetros para agregar items son id, title e icon, y se pueden agregar tantos como se necesiten, teniendo en cuenta que un menú muy grande no es adecuado para la pantalla de un móvil,
xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/itemContactos"
android:title="Contactos"
android:icon="@android:drawable/ic_menu_agenda"/>
<item
android:id="@+id/itemLlamada"
android:title="LLamar"
android:icon="@android:drawable/ic_menu_call"/>
<item
android:id="@+id/itemMapa"
android:title="Mapa"
android:icon="@android:drawable/ic_menu_mapmode"/>
<item
android:id="@+id/itemNavegar"
android:title="Navegar"
android:icon="@android:drawable/ic_menu_search"/>
</menu>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/itemContactos"
android:title="Contactos"
android:icon="@android:drawable/ic_menu_agenda"/>
<item
android:id="@+id/itemLlamada"
android:title="LLamar"
android:icon="@android:drawable/ic_menu_call"/>
<item
android:id="@+id/itemMapa"
android:title="Mapa"
android:icon="@android:drawable/ic_menu_mapmode"/>
<item
android:id="@+id/itemNavegar"
android:title="Navegar"
android:icon="@android:drawable/ic_menu_search"/>
</menu>
4. Dentro del archivo MainActivity.java se debe sobrescribir el método onCreateOptionsMenu, al escribir el nombre del método la ayuda de Android Studio muestra la sintaxis del método, tal como se muestra en la siguiente pantalla.
El resultado al presionar Enter se crea el método onCreateOptionsMenu, como se muestra en el siguiente código.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
5. Para acceder a los items del menu_main.xml, se tiene que “inflar” el archivo usando la línea:
getMenuInflater().inflate(R.menu.menu_main,menu);
Y para agregar un item en tiempo de ejecución se usa la línea
menu.add(menu.NONE,100,menu.NONE,"Salir");
De esta forma queda el método como se muestra a continuación.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
menu.add(menu.NONE,100,menu.NONE,"Salir");
return true;
}
return true;
}
6. Utilizando el asistente de Android Studio para crear métodos, se creará el método onOptionsItemSelected, tal como se hizo en el paso 4.
El resultado es el siguiente, en este método es donde se programaran las acciones que se van a realizar al presionar cada uno de los items del menú.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
7. A continuación se crean métodos para cada una de las acciones, para poner organizar de una forma sencilla las acciones de la aplicación.
En el menú de contactos se muestran los contactos que existen en el teléfono.
private void contactosMenu(){
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people"));
startActivity(intent);
}
En el menú de llamada muestra la aplicación con que se realizan las llamadas, teniendo un número predeterminado por el usuario.
private void llamadaMenu(){
Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:555555"));
startActivity(intent);
}
En el menú de
private void navegarMenu(){
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com"));
startActivity(intent);
}
startActivity(intent);
}
En el menú de llamada muestra la aplicación con que se realizan las llamadas, teniendo un número predeterminado por el usuario.
private void llamadaMenu(){
Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:555555"));
startActivity(intent);
}
En el menú de
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com"));
startActivity(intent);
}
En el menú de mapa muestra la aplicación que se utiliza para ver mapas, en este caso el intent recibe como parámetro las coordenadas de longitud y latitud.
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("geo:19.5,-96.5"));
startActivity(intent);
}
8. El método onOptionsItemsSelected se utilizará un switch para identificar en cual item se ha echo click, asignando un case para cada acción.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.itemContactos:
contactosMenu();
break;
case R.id.itemLlamada:
llamadaMenu();
break;
case R.id.itemNavegar:
navegarMenu();
break;
case R.id.itemMapa:
mapaMenu();
break;
case 100:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.itemContactos:
contactosMenu();
break;
case R.id.itemLlamada:
llamadaMenu();
break;
case R.id.itemNavegar:
navegarMenu();
break;
case R.id.itemMapa:
mapaMenu();
break;
case 100:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
9. Al ejecutar la App se verá de la siguiente forma.
Comentarios