Introdução

O Toast fornece um feedback simples e rápido ao usuário em uma pequena janela. Essa janela é exibida na quantidade de espaço necessário para a mensagem que lhe foi determinada, permanecendo visível por um tempo limite. Por exemplo, ao sair de um e-mail antes de enviá-lo, será exibido um Toast “Rascunho salvo”, para lhe informar que será possível retornar ao e-mail.

Este recurso não tem interação com o usuário, serve somente para dar informações rápidas. Para uma interação há recursos como Alertas e Notificação.

Toast básico

Exemplo básico de Toast

Figura 1: Exemplo básico de Toast

A utilização do Toast é bem simples e não exige um maior nível de conhecimento no Android para aplicá-la. Na maioria das vezes vamos utilizar a construção básica do Toast que se resume em poucas linhas de código ou apenas uma.

Para instanciar o objeto, utilizaremos o método makeToast() ele precisa somente de três parâmetros: contexto, mensagem e duração. A duração é uma constante existente na classe Toast, tendo como opção LENGTH_SHORT para curto tempo ou LENGHT_LONG para longo. Para exibir vamos chamar o método show(). Abaixo segue o exemplo de construção de uma simples mensagem.

Listagem 1: Exemplo básico de exibição de um Toast


        Context contexto = getApplicationContext();
        String texto = "exemplo toast";
        int duracao = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(contexto, texto,duracao);
        toast.show();

Podemos resumir esse código em apenas uma linha para evitar que o objeto Toast seja guardado sem necessidade.

Listagem 2: Exemplo resumido de exibição de um Toast


Toast.makeText(getApplicationContext(), “Exemplo Toast”, Toast.LENGTH_SHORT).show();

Por padrão o Toast é exibido no canto inferior da tela centralizado horizontalmente, podemos mudar isso com o método setGravity(), que aceita três parâmetros: a constante de Gravity, a posição do offset de x e de y. O valor do offset permitirá você mover o Toast para direita alterando o segundo parâmetro, ou para baixo alterando o terceiro parâmetro.

Na listagem abaixo mostraremos como centralizar a mensagem Toast horizontalmente e verticalmente.

Listagem 3: Uso do setGravity()


        Toast toast = Toast.makeText(this, texto, Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
        toast.show();
 

Toast customizado

Toast Customizado

Figura 2: Toast Customizado

Um Toast customizado já exige um pouco mais de conhecimento, pois faz uso de layout para isso. Ele aceita como parâmetro uma View, podendo ser definida pelo método setView(), permitindo-nos definir qualquer layout customizado. Podemos definir um layout tanto por XML quanto por código.

Em nosso exemplo vamos utilizar o arquivo XML salvo como toast.xml. Definiremos uma imagem que se encontra na pasta drawable, um texto que vamos definir seu valor por código e três outros textos fixos para exemplo.

Listagem 4: Layout customizado toast


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:id="@+id/toast_layout_root"
              android:padding="8dp" 
             android:background="#DAAA"
>
    <ImageView
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/icon"
        />
    
    <TextView  
        android:id="@+id/texto"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
    />
    <TextView  
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Exemplo 1"
        android:textSize="10sp"
        android:layout_marginTop="10sp"
    />
    <TextView  
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Exemplo 2"
        android:textSize="15sp"
    />
    <TextView  
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Exemplo 3"
        android:textSize="20sp"
    />
</LinearLayout> 

Abaixo inflaremos o layout que criamos através do LayoutInflater pelo método inflate(). O método inflate precisa de dois parâmetros: o primeiro é nosso layout e o segundo é o componente root de exibição, ou seja, nosso LinearLayout, onde foi definido um id para isso. Agora que temos a View, utilizaremos dela para pegar o TextView ‘id/texto’ e definiremos um texto para o mesmo. Após a configuração de nosso layout inflado, vamos criar o Toast através de seu construtor publico e definiremos o layout inflado em nosso Toast através do método setView().

Nota-se que só devemos utilizar o construtor público do Toast se utilizarmos o recurso setView().

Listagem 5: Exibição do Toast customizado


        LayoutInflater layoutInflater = getLayoutInflater();

        int layout = R.layout.toast;
        ViewGroup viewGroup = (ViewGroup) findViewById(R.id.toast_layout_root);
        View view = layoutInflater.inflate(layout, viewGroup);

        TextView tv_texto = (TextView) view.findViewById(R.id.texto);
        tv_texto.setText(texto);

        Toast toast = new Toast(this);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(view);
        toast.show();

Conclusão

Verificamos neste artigo como o Toast é simples de se utilizar e como a sua utilidade em um sistema é essencial para que o usuário tenha um feedback completo de alguma ação, sem a necessidade de estar criando telas ou avisos para isso. O Toast é um recurso nativo do sistema Android que permite um desenvolvimento ágil pela sua simplicidade, tornando-se algo bem flexível e customizado, sem perder a usabilidade de uma aplicação.
Com isso finalizo esse artigo. Em anexo segue o projeto que foi utilizado como exemplo. Até o próximo, um grande abraço e obrigado.

Referências