Neste artigo abordarei um assunto
muito interessante em se tratando de programação Android, a criação de Menus.
Continuo utilizando a versão 2.2 do Android. Existem duas formas para se
trabalhar com menus, sendo:
- Criação de Menus via XML.
- Criação de Menus via codificação
Java.
O resultado obtido é o mesmo, só
mudando a forma de programar.
Utilizando o guia On-Line
Antes de colocarmos a mão na massa gostaria de
explorar a documentação do Sistema Android encontrada no site:
Muitos programadores não usam este guia
On-line, eu reforço que é de extrema importância a utilização do mesmo para
fins de aprendizado. Navegue até o item “Reference” e obtemos ali todas as
informações necessárias para o desenvolvimento do exemplo neste artigo, no
nosso caso localize o item “Android.View” e escolha a interface “Menu” ou
“MenuItem”. Ver Imagem 01.
Figura 01: Guia Prático On-line.
Conceitos Básicos
Podemos trabalhar com vários tipos de
Menus, como: Menus de Contextos, Menus de Opções e Sub-Menus. Neste artigo Sobrescrevemos
alguns métodos da classe Activity utilizando o “Override”, que no português
significa Sobrescrita. Sendo:
Método
|
Descrição
|
public boolean
onCreateOptionsMenu(Menu menu)
|
Método booleano responsável pela criação dos
itens do Menu, Sub-Menu ou Menus de Contexto.
|
public boolean
onOptionsItemSelected(MenuItem item)
|
Método booleano responsável por chamar as rotinas
dos itens dos menus.
|
Criação de Menus Via XML
O primeiro passo seria criar um Projeto Android clicando em “File/New/Android Project...” definindo o nome como “Menu_Xml”. Localize o diretório “res” e crie uma pasta chamada “menu”. Dentro desta pasta criamos o arquivo XML responsável pela criação do Menu. Para isto clique com o botão direito escolhendo New/Other e definindo o nome para “lista.xml”, ver imagem 02.
O primeiro passo seria criar um Projeto Android clicando em “File/New/Android Project...” definindo o nome como “Menu_Xml”. Localize o diretório “res” e crie uma pasta chamada “menu”. Dentro desta pasta criamos o arquivo XML responsável pela criação do Menu. Para isto clique com o botão direito escolhendo New/Other e definindo o nome para “lista.xml”, ver imagem 02.
Figura 02: Arquivo lista.xml.
Logo em seguida adicione algumas
imagens no diretório “drawable” seguindo praticamente os mesmos passos
descritos anteriormente. Estas imagens servirão de ícones para o Menu.
Neste arquivo iremos definir o id, o
nome e a imagem para ser utilizada no menu, segue adiante a codificação.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/cadastrar"
android:title="Cadastrar"
android:icon="@drawable/img01"/>
<item
android:id="@+id/Movimentos"
android:title="Movimentos"
android:icon="@drawable/img02"/>
<item
android:id="@+id/Caixa"
android:title="Caixa"
android:icon="@drawable/img03"/>
</menu>
É muito simples, utilizamos apenas duas TAGS, sendo: a primeira o Menu e a segunda os Itens. O Xml deverá ficar idêntico ao da Imagem 03.
Figura 03: Android Menu.
Todas as imagens utilizadas no exemplo
estarão disponibilizadas no final do artigo junto com o exemplo.
Localize a classe “Menu_xmlActivity” para implementarmos os métodos descritos
acima. Importe os pacotes:
import pct.Menu_xml.R.id;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
Logo após o método OnCreate() sobrescreva os métodos abaixo:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater menuInflater =
getMenuInflater();
menuInflater.inflate(R.menu.lista,
menu);
return super.onCreateOptionsMenu(menu);
}
A Classe MenuInflater é responsável
por capturar todos os itens do menu localizado no arquivo XML criado
anteriormente. Note que temos um “return” que nos devolve a classe pai do
método sobrescrito.
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
//Realizar
um case pelo “Id” dos itens e logo em seguida mostrar uma mensagem ao usuário
switch (item.getItemId())
{
case
id.cadastrar: Mensagem("Cadastrar", "The Club -
Cadastro!");
break;
case id.Movimentos:
Mensagem("Movimentos", "The Club –
Movimentos!");
break;
case
id.Caixa: Mensagem("Caixa", "The Club - Caixa!");
break;
}
//Retornar
a classe pai
return
super.onOptionsItemSelected(item);
}
//Rotina para exibir mensagem
ao usuário
public void Mensagem(String titulo, String texto)
{
AlertDialog.Builder mensagem = new AlertDialog.Builder(Menu_xmlActivity.this);
mensagem.setTitle(titulo);
mensagem.setMessage(texto);
mensagem.setNeutralButton("OK",
null);
mensagem.show();
}
Já método
booleano OnOptionsItemSelected() é responsável por tratar os itens pela sua
identificação “getItemId”. Este método é responsável por chamar as rotinas
necessárias ao utilizar os itens de Menu. O projeto de Menu em XML deverá ficar
identido ao da Figura 04.
Figura 04:
Menu XML em Run-Time.
Criação de Menus Via programação Java
A criação de Menus Via Programação é
parecida com via XML, a única diferença é que não precisaremos do arquivo XML,
ou seja, programaremos todo o código. Para isto crie outro Projeto Android
clicando em “File/New/Android Project...” definindo o nome como “Menu_Java”.
Localize o diretório “src” para implementarmos em nossa “Activity” o código
necessário. Faremos um pouco diferente neste exemplo, programaremos a interface
“Sub menus”. Veja a seguir o código:
Importe os pacotes:
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
Logo após o método OnCreate()
sobrescreva os métodos abaixo:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
boolean resultado = super.onCreateOptionsMenu(menu);
super.onCreateOptionsMenu(menu);
menu.add(0,1,0,"Cadastros").setIcon(R.drawable.img01);
menu.add(0,2,0,"Movimentos").setIcon(R.drawable.img02);
menu.add(0,3,0,"Caixa").setIcon(R.drawable.img03);
SubMenu utilitario =
menu.addSubMenu("Relatórios").setIcon(R.drawable.img04);
utilitario.add(0,4,0,"Contas a Pagar");
utilitario.add(0,5,0,"Contas a Receber");
return
resultado;
}
Neste caso não utilizamos a classe MenuInflater, pois estamos criando o menu e os itens do sub-menu via programação. O objeto “menu” implementa o método “add”, tendo como parâmetros: o grupo, o item, a ordenação e o título. O método “setIcon” define os ícones dos menus. Já com a classe sub-menu não conseguimos adicionar ícones, tendo suas funcionalidades parecidas com as do “Menu”.
Neste caso não utilizamos a classe MenuInflater, pois estamos criando o menu e os itens do sub-menu via programação. O objeto “menu” implementa o método “add”, tendo como parâmetros: o grupo, o item, a ordenação e o título. O método “setIcon” define os ícones dos menus. Já com a classe sub-menu não conseguimos adicionar ícones, tendo suas funcionalidades parecidas com as do “Menu”.
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch
(item.getItemId())
{
case 1:
Mensagem("Cadastros", "The Club - Cadastro!");
break;
case
2: Mensagem("Movimentos", "The Club - Movimentos!");
break;
case
3: Mensagem("Caixa", "The Club - Caixa!");
break;
case
4: Mensagem("Contas a Pagar", "The Club - Contas a
Pagar!");
break;
case
5: Mensagem("Contas a Receber", "The Club - Contas a
Receber!");
break;
}
//retornar
a classe pai
return
super.onOptionsItemSelected(item);
}
//Rotina para exibir
mensagem ao usuário
public void Mensagem(String titulo, String texto)
{
AlertDialog.Builder mensagem = new AlertDialog.Builder(Menu_JavaActivity.this);
mensagem.setTitle(titulo);
mensagem.setMessage(texto);
mensagem.setNeutralButton("OK", null);
mensagem.show();
}
O método booleano OnOptionsItemSelected() segue a mesma lógica no que foi criado anteriormente, sendo responsável por tratar os itens pela sua identificação “getItemId” chamando as rotinas necessárias ao utilizar os itens de Menu. A única diferença é que possuímos alguns itens a mais.
A classe
Builder novamente está presente em nosso exemplo, tendo como papel mostrar uma
mensagem informativa ao usuário. O exemplo deverá ficar identico ao da Figura
05. A Figura 06 ilustra a utilização de Sub Menus.
Figura 05: Menu via Programação em
Run-Time.
Figura 06:
Sub-Menus.
Conclusão
Vimos neste artigo duas formas de criação de menus no Sistema Android. Sendo a primeira utilizando um arquivo XML e a segunda apenas via programação tendo como resultado o mesmo. Reforço o que escrevi no início do artigo, utilizem o site oficial do Android para poder aprender mais sobre esta tecnologia, tendo sua documentação necessária para se desenvolver praticamente tudo.
Vimos neste artigo duas formas de criação de menus no Sistema Android. Sendo a primeira utilizando um arquivo XML e a segunda apenas via programação tendo como resultado o mesmo. Reforço o que escrevi no início do artigo, utilizem o site oficial do Android para poder aprender mais sobre esta tecnologia, tendo sua documentação necessária para se desenvolver praticamente tudo.
Um abraço e até o mês que vem!
Nenhum comentário:
Postar um comentário