Android - Menus

De Aulas
Revisão de 16h13min de 25 de abril de 2018 por Admin (discussão | contribs) (→‎Exercício)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Links Relacionados: Programação de Aplicativos para Dispositivos Moveis

Menus

Os menus nos fornecem uma forma de acessar rapidamente algumas funcionalidades do nosso aplicativo. Vamos criar aqui um exemplo para mostrar como usar este recurso.

Criando o aplicativo

Comece criando uma nova aplicação chamada My Application Menu e na hora de escolher a Activity, selecione a Basic Activity. Deixe o resto como padrão. Não se esqueça de colocar o aplicativo em uma pasta de sua escolha.

Veja que agora temos dois layouts para a nossa Main, o activity_main.xml e o content_main.xml. No primeiro temos configurações dos menus e do botão em baixo. No segundo é onde colocamos o conteúdo da nossa activity. No caso deste exemplo, não vamos mexer nisso, apenas excluir o TextView.

Adicionando uma nova activity para o About

Agora vá em File -> New -> Activity -> Empty Activity e crie uma nova activity com o nome AboutActivity. O Layout Name irá mudar automaticamente. Deixe no padrão.

No arquivo AndroidManifest.xml observe que foi acrescentado uma nova activity:

<activity android:name=".AboutActivity"></activity>

Vamos dar um título para ela. Então altere a linha para:

<activity android:name=".AboutActivity" android:label="@string/about_title"></activity>

Alterando e Adicionando Strings

Teremos que criar uma string chamada about_title com o título desta activity. Aproveite e já acrescente a string com o texto que a activity irá conter. Para isso, vá em res/values/strings.xml e altere/acrescente as seguintes linhas:

    <string name="about_title">About</string>
    <string name="about_content">
        This is just an illustrative text. Press the back button to go to the main activity.
    </string>


Tpl note.png

Veja que demos um ENTER no conteúdo da string about_content. Podemos ter um texto longo e, para ficar melhor de escrevermos e visualizarmos, podemos colocar entre as tags. Para que, no texto que vai aparecer, pule para a próxima linha, coloque o símbolo \n.

Altere o item do menu chamado action_settings para action_about. Para isso faça um Refactor... Rename. Mude o texto para About. Depois acrescente o action_exit:

    <string name="action_about">About</string>
    <string name="action_exit">Exit</string>

Configurando os itens do menu

Agora que já criamos uma string para o novo item do menu, vamos acrescentar este novo item em menu_main.xml:

    <item
        android:id="@+id/action_exit"
        android:orderInCategory="101"
        android:title="@string/action_exit"
        app:showAsAction="never" />


Tpl note.png

O número 101 no atributo android:orderInCategory é a ordem que os itens aparecem no menu. Observe que o item action_about é 100 e o action_exit é 101. Eles irão aparecer nesta ordem. Como exercício, tente mudar a ordem para ver como fica.

Colocando um conteúdo no About

Na activity do About, acrescente um TextView e faça uma ligação do texto dele com a string about_content.

    <TextView
        android:id="@+id/textViewAboutContent"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="@string/about_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

Configurando o comportamento dos itens do menu

Para configurar os comportamentos. Iremos no método onOptionsItemSelected do MainActivity.java. Altere o conteúdo para ficar da seguinte forma:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pega o item do menu que foi selecionado e faz alguma ação com ele.
        int id = item.getItemId();
        if (id == R.id.action_about) {
            // Abre uma nova activity. Usa um intent pra isso.
            startActivity(new Intent(MainActivity.this, AboutActivity.class));
        } else if (id == R.id.action_exit) {
            finish();
        }
        return super.onOptionsItemSelected(item);
    }


Tpl note.png

Um intent avisa para o sistema do Android que há a intenção de abrir uma activity. Ele então irá gerenciar o ciclo de vida desta activity conforme todas as suas atividades, operações e prioridades.

Atividades

Crie um aplicativo com um Navigation Drawer Activity, adicione funcionalidades para ele, outras telas, etc. Modifique os itens dos menus lateral.