Buscar

Componentes de Menu na Tela Principal do Aplicativo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tela principal e componentes de menu	
APRESENTAÇÃO
Menus são componentes básicos em uma interface de usuário em vários aplicativos. Ao se 
utilizar APIs de menu, o aplicativo consiste em transmitir uma experiência familiar e consistente 
ao usuário. Essas APIs apresentam ações de usuário e outras opções de atividades. Desde o 
Android 3.0, API de nível 11, os dispositivos não fornecem mais botão de menu. Com essa 
alteração, os aplicativos Android precisam migrar de uma dependência do painel de menu de 
itens tradicionais que fornecem uma barra de ações comuns dos usuários.
Em dispositivos de sistema operacional Android, geralmente existem três botões físicos: home, 
back e menu. O botão home volta à tela inicial e, quando segurado, mostra ao usuário todos os 
aplicativos abertos no momento. O botão back é o botão que sai da tela corrente do sistema, e o 
botão menu é um botão que chama funcionalidades próprias em cada aplicação. Isso varia de 
aplicação para aplicação. Apesar de o design e a experiência do usuário para alguns dos itens do 
menu terem passado por mudanças, a semântica para definir um conjunto de ações e opções 
ainda se baseia em APIs de menu.
Nesta Unidade de Aprendizagem, você vai conhecer cada componente do menu da tela principal 
do aplicativo, aprimorar o uso dos componentes de menu e entender a aplicação dos 
componentes 
de menu.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Descrever os componentes de menu na tela principal do aplicativo.•
Exemplificar o uso dos componentes de menu.•
Demonstrar a aplicação dos componentes de menu.•
DESAFIO
Atualmente, o desenvolvimento mobile tem passado por enorme crescimento, em que 
aplicativos fazem multitarefas sem fechar e abrir outros aplicativos, realizando essas transições 
por meio de menus ou barras de ações.
Veja a seguinte situação:
Utilizando seus conhecimentos, indique como você deverá proceder e quais técnicas deverá 
usar.
INFOGRÁFICO
Os componentes são muito importantes no desenvolvimento de um aplicativo. Com eles, é 
possível adicionar menu e opções para o usuário do aplicativo, diminuindo-se, assim, o tempo 
de desenvolvimento e até facilitando a vida do usuário. Com o crescimento dos dispositivos 
móveis, é fundamental conhecer os padrões de design da tela de um aplicativo, de modo a 
verificar e utilizar componentes que melhor se encaixam no desenvolvimento do aplicativo.
No Infográfico a seguir, conheça a ActionBar, seus componentes e suas utilidades.
CONTEÚDO DO LIVRO
Os dispositivos móveis têm grande importância no dia a dia das pessoas, auxiliando em suas 
tarefas pessoais e profissionais, por exemplo, com agendas, mensagens instantâneas e ligações, 
tornando-se extensões do ser humano. Para que o dispositivo móvel tenha todo esse impacto na 
vida humana, são necessários aplicativos, que são programas de computador concebidos para 
processar dados eletronicamente, facilitando a vida do usuario e reduzindo o tempo de uma 
tarefa.
Dentro dos aplicativos existem vários componentes que auxiliam na construção e no 
desenvolvimento, e um dos principais componentes são os menus. Eles são componentes 
comuns da interface do usuário em diversos tipos de aplicativos. Para fornecer uma experiência 
familiar e consistente ao usuário, é importante usar APIs de menu para apresentar ações de 
usuário e outras opções em suas atividades (Activity).
Na obra Desenvolvimento para dispositivos móveis, base teórica desta Unidade de 
Aprendizagem, leia o capitulo Tela principal e componentes de menu e conheça mais sobre os 
principais menus utilizados no desenvolvimento de um aplicativo, exemplos de uso dos menus e 
aplicações em um contexto de desenvolvimento.
Boa leitura.
DESENVOLVIMENTO 
PARA DISPOSITIVOS 
MÓVEIS
Fabrício Ferreira da Silva
Tela principal e 
componentes de menu
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever os componentes de menu na tela principal do aplicativo.
 � Exemplificar o uso dos componentes de menu.
 � Demonstrar a aplicação dos componentes de menu.
Introdução
Os dispositivos móveis facilitam a vida das pessoas a partir de tarefas 
e serviços que tornam nosso cotidiano mais descomplicado. Contudo, 
quando falamos em dispositivos móveis, não estamos falando somente 
em telefones, mas, sim, em aparelhos com o poder de aproximar as 
pessoas por meio de aplicativos, entre os quais, ainda, há componentes 
ligados à criação e ao desenvolvimento, que promovem uma experiência 
com o usuário algo muito fascinante e simples. Ao utilizarmos menus na 
criação de aplicativos, os deixamos mais intuitivos e fáceis de usar para 
que o usuário não tenha dificuldades em sua experiência.
Neste capítulo, você identificará os componentes de menu de um 
aplicativo, o modo como utilizá-los a partir de exemplos e as aplicações 
desses menus em aplicativos. A seguir, veremos os principais menus que 
compõem a tela principal do aplicativo vários menus, entre os vários 
existentes, com suas peculiaridades e recursos.
Tela principal e seus componentes de menu
A tela principal de um aplicativo consiste na tela inicial do seu app (application), 
no qual se dá o primeiro contato do usuário. Por isso, deve-se tomar muito 
cuidado com essa tela, já que será a primeira impressão deixada: se sua tela 
principal não estiver de acordo com o proposto do app, o usuário deixará de 
utilizá-lo. No Android, a tela principal tem o nome de classe MainActi-
vity, na qual desenvolvemos todos os componentes de que precisamos para 
a criação do app. 
Visto que a MainActivity é configurada automaticamente pelo Android 
Studio, é executada pelo usuário ao clicar no ícone do aplicativo pela tela 
Home do Android. A classe MainActivity ou qualquer outra activity deve 
ser filha da classe android.app.Activity, como no exemplo a seguir. 
public class MainActivity extends android.app.Activity {
 ... (código do aplicativo)
 }
No Android Studio, as activities são criadas sempre como filhas de App-
CompatActivity, a classe de compatibilidade de versões mais antigas do 
Android, que, por ser filha da activity, constitui sempre uma boa alternativa 
de uso por motivos de compatibilidade. Veja outro exemplo. 
public class MainActivity extends android.support.v7.app.
AppCompatActivity{
 ... (código do aplicativo)
 }
 A classe android.app.Activity consiste em uma tela da aplicação, 
sendo responsável pelo controle do estado e dos eventos da tela; assim, toda 
vez em que criar uma nova tela de aplicação, ela deverá ser classe-filha. 
Podemos criar o leiaute da activity em formato XML, para conseguirmos 
separar a lógica de negócios da camada de apresentação do aplicativo, podendo-
-se afirmar, com isso, que a activity é o controller do padrão MVC (Model 
View Controller) e a View, o arquivo XML com o leiaute. 
Tela principal e componentes de menu2
Componentes de menu
Menus são componentes comuns da interface do usuário em diversos tipos de 
aplicativos, a fim de fornecer uma experiência familiar e consistente ao usuário. 
Eles são muito importantes, pois a maioria do trabalho de desenvolvimento 
acontece nos menus, são utilizados como atalhos para o restante do aplicativo, 
podendo abrir arquivos, requisitar ajuda, interagir com pessoas ou sistemas, etc.
O menu de uma aplicação traz vários componentes, principalmente na 
tela principal do aplicativo, sendo os principais OptionMenu, ActionBar, 
menu contextual, menu PopUp e menu Inflater, como observaremos a seguir. 
OptionMenu
Menu em que se criam ações relevantes ao projeto, como “buscar”, “Confi-
gurações”, “abrir um arquivo”, conforme a principal atividade do aplicativo; 
nas versões Android 2.3 (API de nível 10 ou inferior), os conteúdos do menu 
apareciam na parte inferior da tela. Quando é aberto, aparece em primeiro 
no menu de itens, que, por sua vez, tem até seis itens, já que,caso passe de 
seis, o Android automaticamente o colocará no menu flutuante, habitando a 
opção de mais itens.
Se você está desenvolvendo para versões mais novas do Android 3.0 (API 
de nível 11 ou superior), os itens ficam disponíveis na barra de aplicativos. É 
possível declarar itens para o menu de opções da subclasse Activity ou de 
uma subclasse Fragment. Se a atividade e os fragmentos declararem itens 
para o menu de opções, eles estarão combinados na IU (interface de usuário). 
Os itens da atividade aparecem primeiro, seguidos de cada um desses frag-
mentos na ordem em que são adicionados à atividade. Se necessário, pode-se 
reorganizar os itens do menu com o atributo android:orderInCategory 
em cada <item> que precisar mover (DEITEL; DEITEL; WALD, 2016).
Nesse menu, devem ficar as ações e outras opções mais utilizadas no 
contexto da tela principal do aplicativo, como Atualizar, Editar e Configura-
ções. Para todos os tipos de menu, o Android cria um formato XML-padrão 
para definir os seus itens, ou seja, os menus não são criados no conteúdo da 
Activity. Os desenvolvedores devem definir o menu e todos os seus itens no 
XML, no qual você infla o recurso menu em sua Activity.
Para definir o menu, crie um arquivo XML dentro do seu projeto na pasta 
res/menu/ (se a pasta menu não estiver criada, crie uma). Na Figura 1, há 
um exemplo de como criar menus.
3Tela principal e componentes de menu
Figura 1. Exemplo de criação de menu.
Fonte: Zarelli (2013, documento on-line).
Como visto, cada item é um menu, cujos atributos podem ser:
 � android:id — ID do recurso exclusiva para o item, o que possibilita 
que o aplicativo consiga reconhecer o item quando o usuário selecionar.
 � android:icon — uma referência a um Drawable para usar como 
ícone do item.
 � android:title — uma referência a uma string para usar como 
título do item.
 � android:showAsAction — especifica quando e como este item 
deve aparecer como um item de ação na ActionBar.
Segundo Zarelli (2013, documento on-line), a localização dos itens em 
seu menu de opções na tela depende da versão para a qual desenvolveu sua 
aplicação. Na API 10 ou inferior, o menu de opções sempre aparecerá no 
rodapé do leiaute, e, na API 11 ou superior, você tem a opção de inseri-las 
na ActionBar, que, por padrão, não é ativada; caso queira, marque a tag 
android:showAsAction=”ifRoom” no seu item.
Nunca se deve alterar os itens no menu de opções com base na View atualmente em 
foco. Quando estiver no modo de toque (quando o usuário não está usando cursor 
de bola ou um teclado), as exibições não poderão ter foco. Portanto, você nunca deve 
usar o foco como base para modificar os itens no menu de opções. 
Tela principal e componentes de menu4
ActionBar
Padrão de design mais importante, refere-se à barra de navegação que fica na 
parte superior da aplicação e que contém os botões com ações, tabs e menus 
para interagir com o usuário. Mostra de forma simples e consistente ao usuá-
rio, de modo que já estão acostumados com os aplicativos por serem nativos, 
representando uma grande vantagem (ADIÇÃO..., 2019, documento on-line).
O uso da barra do aplicativo torna seu aplicativo consistente com outros 
aplicativos Android, permitindo que os usuários entendam rapidamente como 
operá-lo e tenham uma ótima experiência. As principais funções da barra do 
aplicativo são (ADIÇÃO..., 2019, documento on-line) as seguintes.
 � Um espaço dedicado para dar uma identidade ao aplicativo e indicar a 
localização do usuário no aplicativo.
 � Acesso a ações importantes de uma maneira previsível, como a pesquisa.
 � Suporte à navegação e à alternação de visualização (com guias e listas 
suspensas).
Na Figura 2, você pode compreender melhor o que é uma ActionBar.
Figura 2. ActionBar.
Fonte: Cericatto (2013, documento on-line).
5Tela principal e componentes de menu
1. App icon — por padrão, é mostrado o ícone da aplicação, que você tem 
total liberdade de customizar. Com o surgimento do Material Design, 
deu-se um enfoque maior às cores principais da aplicação (primary 
color) versus a cor de acentuação (accent color), efeitos que dão destaque 
às Views e a alguns componentes.
2. Action button — esse espaço serve para os botões que representam as 
ações mais comuns do seu aplicativo. Caso a quantidade de ícones seja 
maior que o tamanho reservado, automaticamente serão inseridos no 
menu do action overflow.
3. Action overflow — menu flutuante que mostra as ações pouco frequentes 
dentro do aplicativo.
Criar e manipular a ActionBar no Android
São necessários três passos:
1. Garantir que a activity deve herdar a AppCompatActivity.
2. Criar um XML do tipo menu (já visto anteriormente).
3. Sobrescrever os métodos (conforme mostrado a seguir):
 ■ onCreateOptionsMenu;
 ■ onPrepareOptionsMenu;
 ■ onOptionsItemSelected.
Inicialmente, devemos implementar os métodos na activity em que 
está se criando na ActionBar, como na Figura 3.
Tela principal e componentes de menu6
Figura 3. Exemplo de ActionBar (sobrescrevendo métodos).
Fonte: Miranda (2016a, documento on-line).
 � O que faz o onCreateOptionsMenu? Ele inflará o menu em XML 
que criou na tela. Por isso, você deve indicar o caminho dele: R.menu.
nome_do_menu.
 � O que faz o onPrepareOptionsMenu? Esse método é executado 
sempre antes de o menu ser mostrado, podendo ser usado para habilitar/
desabilitar itens ou modificar algum conteúdo dinamicamente. No 
exemplo da Figura 3, o ícone action_add foi setado para ficar sempre 
visível, sem testar qualquer condição (setVisible(true)), mas 
é possível fazer com que só se torne visível após o teste de alguma 
condição. Por exemplo, talvez seja interessante que o ícone somente 
apareça após o usuário entrar com alguma string, que será enviada via 
intent. Nesse caso, o método deveria testar se essa string está vazia ou 
não; se sim, o setVisible ficará false. Ao fazer esse teste condi-
cional, esses métodos precisam ser executados novamente, pois somente 
são executados na hora em que a ActionBar está sendo carregada. 
7Tela principal e componentes de menu
Assim, caso queira que esses métodos sejam executados novamente, é 
necessário colocar um supportInvalidateOptionsMenu (); 
em alguma parte do código (MIRANDA, 2016a documento on-line). 
Outro exemplo seria o caso de somente mostrar um ícone na Actio-
nBar após o preenchimento de um EditText. Poder-se-ia usar o 
supportInvalidateOptionsMenu (), como na Figura 4.
Figura 4. Exemplo de ActionBar (sobrescrevendo métodos 2).
Fonte: Miranda (2016a, documento on-line).
 � O que faz o onOptionsItemSelected? Ação que ocorre após 
o ícone da ActionBar ser clicado. No exemplo da Figura 4, após 
o ícone ser clicado, ele verifica se é o ícone que eu estou pensando 
que é (R.id.action.add. Caso seja, por meio da intent, ele sai 
da MainActivity e vai para outra activity chamada Cadastra-
PlaylistActivity (MIRANDA, 2016a, documento on-line).
Menu contextual
Segundo Deitel, Deitel e Wald (2016), um menu contextual oferece ações que 
afetam um item ou uma estrutura de contexto específico na IU. É possível 
fornecê-lo para qualquer exibição, embora seja geralmente usado para itens 
em uma ListView, GridView ou em outras coleções de exibições em que 
o usuário pode realizar ações diretas em cada item.
Tela principal e componentes de menu8
Há duas formas de fornecer ações contextuais:
 � Em um menu de contexto flutuante (Figura 5): um menu aparece como 
uma lista flutuante de itens de menu (semelhante a uma caixa de diálogo) 
quando o usuário realiza um clique longo (pressiona e segura) em uma 
exibição que declara suporte para um menu de contexto. Os usuários 
podem realizar uma ação contextual em um item por vez.
 � No modo de ação contextual (Figura 5): implementação de sistema 
de ActionMode que exibe uma barra de ação contextual no topo da 
tela com itens de ação que afetam os itens selecionados. Quando esse 
modo está ativo, os usuários podem realizar uma ação em vários itens 
por vez (se o aplicativopermitir).
Figura 5. Capturas de tela de um menu de contexto flutuante (esquerda) e a barra de 
ação contextual (direita).
Fonte: Menus (2019, documento on-line).
9Tela principal e componentes de menu
Pode ser criado para aparecer ao se clicar em uma View vinculada a ele. 
Por exemplo, suponha que você deseje que, ao se clicar em um item de uma 
ListView, surja um menu sobre ela com algumas opções, como deletar 
um item. A ListView continuará parcialmente visível, pois um menu de 
opções ficará sobre ela. Para que isso aconteça, basta sobrescrever o método 
onCreateContextMenu que está na activity (MIRANDA, 2016b, docu-
mento on-line). As opções do menu podem ser criadas programaticamente 
(sem precisar ser via XML) como no código a seguir:
@Override
public void onCreateContextMenu (ContextMenu menu, View v, 
ContextMenu.ContextMenuInfo menuInfo) {
 menu.add ("Primeira Opção do Menu");
 menu.add ("Segunda Opção do Menu");
 menu.add ("Deletar Item");
 super.onCreateContextMenu (menu, v, menuInfo);
}
Você já pensou em como o menu suspenso saberá o momento de surgir? Em outras 
palavras, como eu faço a ligação de uma View com o menu suspenso? Basta registrá-la 
no menu, usando o método registerForContextMenu, que deverá ser colocado 
dentro do onCreate() da activity (MIRANDA, 2016b, documento on-line):
protected void onCreate (Bundle savedInstanceState) {
 super.onCreate (savedInstanceState);
 setContentView(R.layout.activity _ meu _ laytout);
 registerForContextMenu (MinhaView);
}
Tela principal e componentes de menu10
O menu de contexto será acionado sempre que houver um clique longo na 
View com a qual está vinculado. Caso a View esteja implementada, o método 
setOnItemLongClickListener precisará fazer o retorno do método 
false para o evento não abrir sozinho; se for true, ele não abrirá sozinho. 
O método setOnItemLongClickListener pode ser usado para pegar 
um item de uma ListView, armazenando em uma variável de instância, 
enquanto o menu suspenso pode empregar informações desse item para fazer 
alguma ação, como deletá-lo, pois o menu não seria capaz de enxergar qual 
item da ListView foi clicado (MIRANDA, 2016b, documento on-line).
O método add do menu retorna um Menu Item cuja referência pode ser 
armazenada em uma variável de mesmo tipo. Podemos inserir nele uma ação 
depois de ser clicado ou até mesmo ligá-lo a uma intent. No código a se-
guir, conecta-se o menu a uma intent, executada sem precisar usar o método 
startActivity. O exemplo a seguir mostra como isso é usado para enviar 
um SMS (short message service):
@Override
public void onCreateContextMenu (ContextMenu menu, View v, 
ContextMenu.ContextMenuInfo menuInfo) {
 MenuItem menuSMS = menu.add ("Enviar SMS");
 Intent intentSMS = new Intent (Intent.ACTION _ VIEW);
 intentSMS.setData (Uri.parse("sms:" + meuContato.
getTelefone()));
 menuSMS.setIntent (intentSMS);
 super.onCreateContextMenu (menu, v, menuInfo);
}
No caso de um SMS, não é necessário adicionar uma permissão no ma-
nifest, pois outro aplicativo do celular usará o recurso de envio desse tipo 
de mensagem.
Como já dito, você pode adicionar um evento de clique ao MenuItem, 
como se fosse um botão. Veja o exemplo de código a seguir, que demonstra 
o objetivo de fazer uma ligação do celular.
11Tela principal e componentes de menu
@Override
public void onCreateContextMenu (ContextMenu menu, View v, 
ContextMenu.ContextMenuInfo menuInfo) {
 MenuItem menuLigar = menu.add ("Fazer chamada");
 menuLigar.setOnMenuItemClickListener (new MenuItem.setOn-
MenuItemClickListener () {
@Override
public boolean onMenuItemClick (MenuItem item) {
 if (ActivityCompat.checkSelfPermission (
NomeActivity.this, Manifest.permission.CALL _ PHONE)!=
PackageManager.PERMISSION _ GRANTED) {
ActivityCompat.requestPermission (NomeActivity.this, new String 
[] {Manifest.permission.CALL _ PHONE}, 1);
} 
else 
 {
Intent intentLigar = new Intent (Intent.ACTION _ CALL);
intentLigar.setData (Uri.parse("tel:" + meuContato.getTelefone()));
startActivity(intentLigar);
 }
 return false;
 }
 }
);
super.onCreateContextMenu (menu, v, menuInfo);
 }
É necessário pedir para o dono do celular que permita o uso dessa fun-
cionalidade do aparelho, tornando-se necessário adicionar ao manifest a 
permissão:
<uses-permission android:name="android.permission.CALL _ PHONE"/>
O código anterior apenas verifica se há permissão para fazer uma liga-
ção — se não, o aplicativo solicita uma permissão do usuário; se sim, então 
executa uma intent implícita, que busca um recurso de chamada do celular 
(MIRANDA, 2016b, documento on-line).
Tela principal e componentes de menu12
Menu PopUp
Menu exibido abaixo do texto âncora, se houver espaço disponível, e acima 
dele, quando não houver, desaparecendo se você clicar fora do menu PopUp. 
O android.widget.PopMenu é a subclasse direta da classe java.
lang.Object.
O menu PopUp (Figura 6) exibe itens em uma lista vertical, fornecendo 
ações adicionais relacionadas a um conteúdo específico ou ações de forneci-
mento de uma segunda parte de comando. Suas ações não devem afetar um 
conteúdo correspondente diretamente, para o qual servem as ações contextuais. 
Geralmente, o menu PopUp serve para as ações estendidas que relacionam 
os conteúdos da activity.
Após definir o menu em XML, existem três passos para exibir o menu 
PopUp:
1. Instancie um PopupMenu com seu construtor, que usa o context do 
aplicativo atual e a View em que o menu deve estar ancorado.
2. Use menu Inflater para inflar o recurso de menu no objeto menu retor-
nado por PopupMenu.getMenu().
3. Chame PopupMenu.show().
Veja uma demonstração a seguir:
<ImageButton
 android:layout _ width="wrap _ content"
 android:layout _ height="wrap _ content"
 android:src="@drawable/ic _ overflow _ holo _ dark"
 android:contentDescription="@string/descr _ overflow _ button"
 android:onClick="showPopup" />
Note que há um atributo OnClick que realiza a exibição do menu. Após 
realizar o evento OnClick, a activity exibe o menu dessa forma:
public void showPopup (View v) {
 PopupMenu popup = new PopupMenu (this, v);
 MenuInflater inflater = popup.getMenuInflater ();
 inflater.inflate(R.menu.actions, popup.getMenu());
 popup.show();
}
13Tela principal e componentes de menu
Figura 6. Menu PopUp.
Fonte: Android... (2013, documento on-line).
Menu Inflater
Possibilita que você infle o menu de contexto de um recurso de menu. Os 
parâmetros do método de retorno de chamada incluem a View que o usuário 
selecionou e um objeto ContextMenu.ContextMenuInfo, que fornece 
informações adicionais sobre o item selecionado. Se sua activity apresentar 
várias exibições, em que cada uma forneça um menu de contexto diferente, 
você deverá usar esses parâmetros para determinar qual menu de contexto 
deve ser inflado (MENUS, 2019, documento on-line):
@Override
public void onCreateContextMenu (ContextMenu menu, View v,
 ContextMenuInfo menuInfo) {
 super.onCreateContextMenu (menu, v, menuInfo);
 MenuInflater inflater = getMenuInflater ();
 inflater.inflate (R.menu.context _ menu, menu);
}
Tela principal e componentes de menu14
Exemplificação dos componentes de menu
A utilização dos componentes de menu varia muito entre os aplicativos, já 
que cada um tem suas peculiaridades e propriedades, por isso a dificuldade 
de indicar apenas um. Você, como desenvolvedor, precisa ter um mínimo de 
conhecimento antes de começar a codificar sobre como será o aplicativo, qual 
área atenderá, qual o público-alvo, etc.
Os componentes mais utilizados são Option Menu e ActionBar, com 
os quais conseguirá fazer muitas coisas no desenvolvimento de aplicativos. 
No Option Menu, é possível declarar itens na subclasse da Activity ou 
na subclasse do Fragment; caso contrário, se essas classes declararem os 
itens para o Option Menu, estarãocombinados com a IU. Os itens da activity 
surgem primeiro, seguidos dos itens do Fragments seguindo a ordem de 
como foram adicionados à activity. Podemos reorganizar os itens do menu 
com o atributo android:orderInCategory em cada <item> que há 
necessidade de mover.
Para especificar o Option Menu para uma activity, modifique o método 
onCreateOptionsMenu (), lembrando que os Fragments fornecem o 
retorno da chamada desse método. Esse método pode inflar o recurso de menu 
em um menu fornecido pelo retorno da chamada, como no exemplo a seguir:
@Override
public boolean onCreateOptionsMenu (Menu menu) {
 MenuInflater inflater = getMenuInflater ();
 inflater.inflate (R.menu.game _ menu, menu);
 return true;
}
Caso queira adicionar itens ao Option Menu, use add ()e, para recuperar 
os itens, findItem (), para rever as propriedades da APIs de menu item.
A classe ActionBar descreve como usar o widget Toolbar da biblio-
teca de suporte v7 appcompat como uma barra de aplicativo. Existem outras 
maneiras de implementar uma barra de aplicativo, como alguns temas que 
configuram uma ActionBar como uma barra de aplicativo por padrão — 
contudo, o uso do Toolbar da appcompat facilita a configuração de uma 
barra de aplicativo que funcione no conjunto mais amplo de dispositivos, 
além de permitir personalizá-la posteriormente ao desenvolver seu aplicativo.
15Tela principal e componentes de menu
A partir da versão Android 3.0 (nível API 11), todas as activities que 
usarem temas-padrão já vêm com o ActionBar como barra de aplicativo. 
Consequentemente, a ActionBar nativa se comporta de modo diferente de 
acordo com a versão do sistema Android usada pelo dispositivo. Em contraste, 
os recursos mais recentes foram adicionados à versão do Toolbar da biblio-
teca de suporte, disponíveis em qualquer dispositivo que use essa biblioteca.
Por isso, você deve usar a classe Toolbar da biblioteca de suporte para 
implementar as barras de aplicativo das suas activities. O uso da barra de 
ferramentas da biblioteca de suporte ajuda a garantir que seu aplicativo tenha 
um comportamento consistente no conjunto mais amplo de dispositivos; o 
widget Toolbar fornece uma experiência de Material Design em dispositivos 
com o Android 2.1 (nível de API 7) ou posterior, mas a barra de ações nativa 
não oferece suporte ao Material Design a não ser que o dispositivo esteja 
executando o Android 5.0 (nível de API 21) ou posterior.
Adicionar uma barra de ferramentas
São cinco as etapas para adicionar Toolbar como a barra de aplicativo de 
uma activity:
1. Adicione a biblioteca de suporte v7 appcompat ao seu projeto. Ao usar 
classes da biblioteca de suporte, confira se você importou a classe do 
pacote adequado. Por exemplo, ao aplicar a classe ActionBar:
 ■ android.support.v7.app.ActionBar, ao usar a biblioteca 
de suporte;
 ■ android.app.ActionBar, ao desenvolver apenas para o nível 
de API 11 ou posterior.
2. Certifique-se de que a activity estenda AppCompatActivity.
public class MyActivity extends AppCompatActivity {
 // seu código aqui ...
}
3. No manifest do aplicativo, configure o elemento <application> 
para usar um dos temas no ActionBar da appcompat. O uso de um 
desses temas impede que o aplicativo use a classe ActionBar nativa 
para fornecer a barra do aplicativo.
Tela principal e componentes de menu16
<application
 android:theme="@style/Theme.AppCompat.Light.NoActionBar"
 />
4. Adicione um Toolbar ao leiaute da atividade. Por exemplo, o código 
de leiaute a seguir adiciona um Toolbar e faz com que pareça flutuar 
acima da atividade:
<android.support.v7.widget.Toolbar
 android:id="@+id/my _ toolbar"
 android:layout _ width="match _ parent"
 android:layout _ height="?attr/actionBarSize"
 android:background="?attr/colorPrimary"
 android:elevation="4dp"
 android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
 app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
A especificação do Material Design recomenda que barras de aplicativos tenham uma 
elevação de 4 dp. Posicione a barra de ferramentas no topo do leiaute da atividade, 
pois você a usará como uma barra de aplicativo.
5. No método onCreate () da activity, chame o método setSup-
portActionBar () da activity e passe a barra de ferramentas da 
activity. Esse método define a barra de ferramentas como a barra do 
aplicativo para a activity. 
@Override
protected void onCreate (Bundle savedInstanceState) {
 super.onCreate (savedInstanceState);
 setContentView(R.layout.activity _ my);
 Toolbar myToolbar = (Toolbar) findViewById(R.id.my _ toolbar);
 setSupportActionBar (myToolbar);
 }
17Tela principal e componentes de menu
Após concluir as etapas, seu aplicativo tem uma ActionBar básica; por 
padrão, a ActionBar contém o nome do aplicativo e um menu flutuante. O 
Option Menu inicialmente contém apenas o item Settings. Você pode adicionar 
mais ações à ActionBar e ao menu flutuante.
Aplicação dos componentes
Após conhecermos os componentes de menu e exemplificá-los, veremos 
como aplicá-los na tela principal dos aplicativos, tornando-os mais robustos 
e mais utilizados no desenvolvimento de aplicativo, visando a facilitar a vida 
dos usuários ao transformarem as telas amigáveis e funcionais do aplicativo.
No momento de desenvolvimento, devemos tomar cuidado em relação a 
como é feita a codificação, se realizamos todos os testes e se verificamos os 
tratamentos de erros e exceções.
Codificação
Os menus apresentam métodos utilitários que permitem acessar várias ati-
vidades úteis, como ocultar ou mostrar uma barra do aplicativo. Para usar 
os métodos utilitários da ActionBar, chame o método getSupportAc-
tionBar () da atividade. Esse método retorna uma referência a um objeto 
ActionBar da appcompat. Quando tiver essa referência, você pode chamar 
qualquer um dos métodos da ActionBar para ajustar a barra do aplicativo. Por 
exemplo, para ocultar a barra do aplicativo, chame ActionBar.hide ().
Quando o usuário seleciona um item para o menu de opções (inclusive 
os itens de ação na barra de aplicativos), o sistema chama o método onOp-
tionsItemSelected () da atividade. Esse método passa o menu item 
selecionado. É possível identificar o item chamando getItemId (), que 
retorna o ID único para o item de menu (definido pelo atributo android:id no 
recurso de menu ou em um número inteiro fornecido ao método add ()). 
É possível combinar esse ID com itens de menu conhecidos para realizar a 
ação adequada. Por exemplo:
Tela principal e componentes de menu18
@Override
public boolean onOptionsItemSelected(MenuItem item) {
 // Handle item selection
 switch (item.getItemId()) {
 case R.id.new _ game:
 newGame();
 return true;
 case R.id.help:
 showHelp();
 return true;
 default:
 return super.onOptionsItemSelected(item);
 }
}
Quando processar um item de menu com sucesso, retorne true. Se não 
processar o item de menu, você deverá chamar a implementação de superclasse 
de onOptionsItemSelected () (a implementação-padrão retornará 
false).
Se a atividade contiver fragmentos, o sistema chamará primeiro onOp-
tionsItemSelected () para a atividade e, em seguida, para cada frag-
mento (na ordem em que cada fragmento foi adicionado) até que um retorne 
true ou até chamar todos os fragmentos.
O Android 3.0 adiciona a possibilidade de definir o comportamento do On-Click para 
um item de menu em XML usando o atributo Android OnClick. O valor do atributo deve 
ser o nome de um método definido pela atividade usando o menu, e o método deve 
ser público e aceitar um único parâmetro menu item — quando o sistema chamar 
esse método, ele passará o item de menu selecionado.
19Tela principal e componentes de menu
Se o aplicativo contiver várias atividades e algumas delas fornecerem o mesmo menu 
de opções, considere criar uma atividade que não implemente nada exceto os métodos 
onCreateOptionsMenu() eonOptionsItemSelected(). Em seguida, 
estenda essa classe para cada atividade, que deve compartilhar o mesmo menu de op-
ções. Dessa maneira, é possível gerenciar um conjunto de códigos para lidar com ações 
de menu e cada classe descendente herda os comportamentos do menu. Se quiser 
adicionar itens de menu a uma das atividades descendentes, substitua onCreateOp-
tionsMenu() nessa atividade. Chame super.onCreateOptionsMenu(menu) 
para a criação dos itens de menu originais e, em seguida, adicione novos itens de menu 
com menu.add(). Você também pode substituir o comportamento da superclasse 
para itens de menu individuais.
Quando o usuário seleciona um item de menu, você deve implementar 
a interface PopupMenu.OnMenuItemClickListener e registrá-la 
com o PopupMenu chamando setOnMenuItemclickListener(). 
Quando o usuário seleciona um item, o sistema chama o retorno de chamada 
onMenuItemClick() na interface. 
public void showMenu(View v) {
 PopupMenu popup = new PopupMenu(this, v);
 // This activity implements OnMenuItemClickListener
 popup.setOnMenuItemClickListener(this);
 popup.inflate(R.menu.actions);
 popup.show();
}
@Override
public boolean onMenuItemClick(MenuItem item) {
 switch (item.getItemId()) {
 case R.id.archive:
 archive(item);
 return true;
 case R.id.delete:
 delete(item);
 return true;
 default:
Tela principal e componentes de menu20
 return false;
 }
}
ADIÇÃO da barra do aplicativo. Android Developers, [S. l.], 2019. Disponível em: https://
developer.android.com/training/appbar. Acesso em: 4 jul. 2019.
ANDROID Popup Menu Example. JavaTpoint, Noida, 23 Aug. 2013. Disponível em: 
https://www.javatpoint.com/android-popup-menu-example. Acesso em: 4 jul. 2019.
CERICATTO, R. Action Bar. Programação em Android, Curitiba, 30 out. 2013. Disponível 
em: http://www.aprendaandroidgratis.com.br/2013/10/action-bar.html. Acesso em: 
4 jul. 2019.
DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada 
em aplicativos. 3. ed. Porto Alegre: Bookman, 2016. 618 p.
MENUS. Android Developers, [S. l.], 2019. Disponível em: https://developer.android.com/
guide/topics/ui/menus#context-menu. Acesso em: 4 jul. 2019.
MIRANDA, R. F. Criando e manipulando uma ActionBar no Android. javAndroidFor-
taleza, Fortaleza, 31 out. 2016a. Disponível em: http://javandroidfortaleza.blogspot.
com/2016/10/actionbar-android-como-fazer.html. Acesso em: 4 jul. 2019.
MIRANDA, R. F. Criando um Menu Suspenso (Menu de Contexto) no Android. javAndroi-
dFortaleza, Fortaleza, 12 dez. 2016b. Disponível em: http://javandroidfortaleza.blogspot.
com/2016/12/contextmenu-suspenso-contexto-menu.html. Acesso em: 4 jul. 2019.
ZARELLI, G. B. Android — Criando Menus de opções (Creating an Options Menu — 
onCreateOptionMenu). HelpDev, Ribeirão Preto, 14 ago. 2013. Disponível em: http://
helpdev.com.br/2013/08/14/android-criando-menus-de-opcoes-creating-an-options-
-menu/. Acesso em: 4 jul. 2019.
Leituras recomendadas
CERICATTO, R. Menus. Programação em Android, Curitiba, 2 nov. 2012. Disponível em: 
http://www.aprendaandroidgratis.com.br/2012/11/menus-em-android.html. Acesso 
em: 4 jul. 2019.
DEITEL, P.; DEITEL, H.; DEITEL, A. Android: como programar. 2. ed. Porto Alegre: Book-
man, 2015. 690 p.
21Tela principal e componentes de menu
DICA DO PROFESSOR
A aplicação de menus em dispositivos móveis consiste em demonstrar a importância deles em 
um aplicativo, diminuindo a distância dos usuários com a tecnologia dos aplicativos.
Na Dica do Professor, você conhecerá um pouco mais sobre a aplicação dos menus e 
verá exemplos de como utilizá-los dentro de um aplicativo.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Ao se adicionar um menu na tela do aplicativo, é importante preenchê-lo com itens 
que auxiliem o usuário a utilizar o aplicativo de forma intuitiva e adaptável às suas 
necessidades. Há um menu que é responsável por carregar o XML desse menu.
Qual das alternativas a seguir apresenta esse menu que carrega o XML do menu?
A) RadioGroup.
B) Menu flutuante.
C) OptionMenu.
D) Menu Inflater.
E) Menu contextual.
O uso de barra de ações ou do aplicativo tem sido uma boa prática no 
desenvolvimento de aplicativo. Ela é um dos elementos mais importantes da Activity 
2) 
do aplicativo, pois fornece uma estrutura visual e elementos interativos que são 
familiares aos usuários.
Qual das alternativas a seguir é considerada uma barra dentro do aplicativo?
A) Toolbar.
B) ListView.
C) ViewGroup.
D) RadioButton.
E) OptionMenu.
3) Após criar uma ActionBar no aplicativo, é importante sobrescrever três métodos. 
Qual método é executado sempre antes de o menu ser mostrado e que pode ser usado 
para habilitar/desabilitar itens ou modificar algum conteúdo dinamicamente?
Assinale a alternativa correta.
A) onOptionsItemSelected.
B) onPrepareOptionsMenu.
C) onCreateOptionsMenu.
D) onMenuItemClick.
E) onCreateContextMenu.
4) É o menu que exibe seus itens abaixo do texto âncora, se houver espaço disponível na 
tela do aplicativo, o menu é exibido acima do texto âncora. Seus itens aparecem na 
tela em uma lista vertical e sua importância é em ações estendidas que são 
relacionados com a Activity.
Que menu é esse? Assinale a alternativa correta.
A) Menu PopUp.
B) Menu contextual.
C) Menu Inflater.
D) Option Menu.
E) Navigation Drawer.
5) Os dispositivos móveis estão em todos os lares, e dentro desses dispositivos estão os 
aplicativos, que são uma extensão do mundo real direto pra a tela do celular. Sabe-se 
que os aplicativos têm funcionalidades e recursos que facilitam a vida de seus 
usuários. Os aplicativos são constituídos por menus e componentes que executam a 
aplicação. A tela principal do aplicativo é a cara do app.
Esse componente é o padrão de design mais importante, que abriga botões com ações, 
tabs e menus para interagir com usuários. Assinale a alternativa que define o 
componente citado.
A) OptionMenu.
B) ActionBar.
C) ViewGroup.
D) Menu contextual.
E) ListView.
NA PRÁTICA
O desenvolvimento de aplicativos está cada dia mais em crescimento no mundo. Percebendo 
isso, os desenvolvedores devem se atualizar cada vez mais rápido e de forma dinâmica, o que 
requer padrões de programação e desenvolvimento.
Com os conceitos de menu na hora do desenvolvimento, as aplicações ganharam mais poder e 
leveza, pois, a partir disso, os aplicativos cresceram no mercado, tirando espaço da Web e 
do desktop. Utilizando menus em suas telas principais, os desenvolvedores perceberam que a 
aplicação ia mais longe com esse novo conceito.
Veja a história de Pedro e saiba como esse padrão de design impactou a área de TI.
Conteúdo interativo disponível na plataforma de ensino!
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do 
professor:
Como criar menus no ActionBar da activity usando {Android Studio}
Neste vídeo, você irá aprender como criar um menu ActionBar e suas funcionalidades para 
colocar em prática no seu dia a dia.
Conteúdo interativo disponível na plataforma de ensino!
Android 6 para programadores — uma abordagem baseada em aplicativos
Neste livro, você verá conceitos sobre Android, como criar aplicativos e ter uma compreensão 
melhor da linguagem.
Wilson
Máquina de escrever
https://www.youtube.com/embed/xVr0LXA8CxE
Componente Listview no Android Studio
Veja, neste artigo, como criar um aplicativo em Android trabalhando com listas por meio do 
componente ListView com menus, eventos e chamadas de novas janelas pelo ambiente de 
desenvolvimento Android Studio.
Conteúdo interativo disponível na plataforma de ensino!
Wilson
Máquina de escrever
https://viewer.bibliotecaa.binpar.com/viewer/9788582604120
Wilson
Máquina de escrever
https://www.devmedia.com.br/componente-listview-no-android-studio/32700

Continue navegando