Ir al contenido principal

Desarrollo en Android T13 - Menús

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 idtitle 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>

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);
}


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) {
    getMenuInflater().inflate(R.menu.menu_main,menu);
    menu.add(menu.NONE,100,menu.NONE,"Salir");
    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);
}


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);
}

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.


private void mapaMenu(){
    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);
}

9. Al ejecutar la App se verá de la siguiente forma.

      


        



        


Comentarios

Entradas más populares de este blog

Creación de Librerías en Java

Creación de Librerías en Java   Las librerías son un conjunto de clases con funciones especificas que ayudan a desarrollar aplicaciones más complejas de una forma sencilla, por ejemplo si se requiere realizar cálculos matemáticos y emplear el funciones como el Seno o Coseno, simplemente se importa la librería Math y se utilizan estos métodos, en lugar de desarrollarlos. Java cuenta con una extensa lista de librerías disponibles dentro del JDK o desarrolladas por terceros, pero también existe la posibilidad de desarrollar librerías propias para reutilizar de ...

Elegir la clase a ejecutar en NetBeans, MVC

Elegir la clase a ejecutar en NetBeans Para que java pueda ejecutar una aplicación esta debe tener un método conocido como punto de entrada, este método tiene la sintaxis: void static void main(String [] sax){ //código } En ocasiones en una aplicación tiene varios puntos de entrada, que pueden servir para probar diferentes partes de la aplicación sin tener que recorrer o pasar por varias clases, para esto se puede seleccionar directamente en las propiedades del proyecto que clase será la principal.

Librerías JOptionPane para generar ventanas de entrada y salida de datos

Para poder introducir datos leídos desde el teclado existen varias formas, una de ellas hace uso de la librería javax.swing.JOptionPane que entre otras opciones permite mostrar ventanas para introducir datos, y ventanas para mostrar valores. Con el uso de esta librería se crean pequeñas interfaces definidas por el sistema, pero ya se hace uso de las librerías graficas swing, que se verán más adelante.