Baixe o app para aproveitar ainda mais
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
Compartilhar