Páginas

Pesquisar neste blog

Mostrando postagens com marcador Toast. Mostrar todas as postagens
Mostrando postagens com marcador Toast. Mostrar todas as postagens

25 de abril de 2019

Como Customizar a Mensagem Toast no Android



A mensagem Toast exibida nos dispositivos Android é bem conhecida, trata-se daquela mensagem que o smartphone exibe quando executa algumas operações e avisa que finalizou ou que está em processo por exemplo, a mensagem que avisa que está enviando o e-mail. A mensagem Toast padrão tem uma cor de fundo cinza escuro com os caracteres em branco, mas e se você quiser usar a mensagem Toast e customizar a aparência como alterar a cor de fundo, o tamanho e a cor do texto e quem sabe até mesmo a aparência da mensagem.

Para customizar a mensagem de Toast precisamos criar uma variável que aponta para uma mensagem de Toast, obter a View padrão da mensagem e o TextView que armazena o texto da mensagem. Dependendo de quais customizações queremos fazer podemos precisar de cada uma destas variáveis. No exemplo abaixo a variável toast é usada para configurar o posicionamento da mensagem na tela, no caso a mensagem deve ser centralizada verticalmente, a variável toastMessage usamos para configurar a cor e o tamanho do fonte do texto, e a variável toastView usamos para configurar a cor de fundo da mensagem Toast.

Context context = getApplicationContext();
Toast toast = Toast.makeText(context, "Mensagem.....", Toast.LENGTH_LONG);

// Retorna a View padrão da mensagem
View toastView = toast.getView();

// Para customizar o texto da mensagem obter a View do componente do texto
// que no caso é um TextView
TextView toastMessage = (TextView) toastView.findViewById(android.R.id.message);
toastMessage.setTextSize(50);
toastMessage.setTextColor(Color.YELLOW);

// Centraliza a mensagem no centro da tela
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

// Altera a cor de fundo da mensagem
toastView.setBackgroundColor(Color.BLUE);

// Exibe a mensagem
toast.show();

O código acima exibe uma mensagem Toast com a aparência mostrada na figura abaixo:

Figura 1 - Mensagem Toast Customizada
Além das customizações mostradas neste post é possível fazer mais customizações como por exemplo, alterar completamente o visual do componente Toast, veja mais informações de customização no site de desenvolvedores do Android
https://developer.android.com/guide/topics/ui/notifiers/toasts


27 de março de 2019

Como Alterar o Tempo de Exibição da Mensagem Toast no Android



A mensagem Toast é aquela mensagem que aparece para confirmar alguma alteração, progresso de uma tarefa ou qualquer outra informação em dispositivos Android. A mensagem normalmente possui o texto em branco com um fundo cinza escuro.

A ideia por trás deste tipo de mensagem é passar uma informação para o usuário sem atrapalhar a atividade que ele estiver executando. A mensagem "aparece" por um curto espaço de tempo e "desaparece" sem a necessidade de interação do usuário.

A mensagem Toast como é conhecida no Android é uma View onde você pode definir a mensagem e o tempo de exibição, o intervalo de tempo pode ser curto - LENGHT_SHORT, dura em torno de 2 segundos ou longo - LENGHT_LONG, que dura em torno de 3,5 segundos. Mas e se você precisar que a mensagem fique visível por um intervalo de tempo maior, para o caso por exemplo, de uma mensagem mais longa.

A classe Toast não permite definir um intervalo de exibição da mensagem diferente dos valores pré-definidos, LENGHT_LONG e LENGHT_SHORT, então para aumentar este tempo podemos usar como uma possível solução a classe CountDownTimer. Esta classe permite definir um intervalo de tempo de exibição da mensagem durante um tempo pré-definido por exemplo, exibe a mensagem a cada 1 segundo durante 10 segundos. Segue o código exemplo para exibir uma mensagem Toast por 10 segundos:


final Toast toast = Toast.makeText(this, "Esta é uma mensagem Toast",
        Toast.LENGTH_LONG);

// Exibe a mensagem por 10 segundos
CountDownTimer toastCountDown;
toastCountDown = new CountDownTimer(10000, 1000) {
    public void onTick(long millisUntilFinished) {
        toast.show();
    }
    public void onFinish() {
        toast.cancel();
    }
};

// Exibe a mensagem
toast.show();
// Inicia a contagem do tempo
toastCountDown.start();

No método onFinish() da classe CountDownTimer cancelamos a exibição da mensagem quando atinge o tempo máximo.

Esta solução funciona porque a mensagem fica visível na tela pelo tempo definido e desaparece ao final do tempo máximo.