Prévia do material em texto
DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS Fabiano Berlinck Neumann Alertas e a classe Toast Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Explicar o que são os alertas da classe Toast. � Exemplificar o uso de alertas por meio do Toast. � Aplicar os alertas em projetos, por meio do Toast. Introdução Todas as pessoas que possuem aparelhos com sistema operacional Android já devem ter recebido várias formas de mensagens ao usar os aplicativos, seja com alertas da classe Toast, notificações ou caixas de diálogo. Cada uma das formas de envio de mensagem para o usuário tem suas particularidades e recomendações para uso de cada tipo de alerta. Em alguns casos, é necessário solicitar ao usuário tomar uma decisão, enquanto em outros basta apresentar uma informação que não chega a causar prejuízo se não for lida. Neste capítulo, você aprenderá o que são e como funcionam os alertas da classe Toast e verá exemplos de seu uso nas linguagens Java e Kotlin, além de sua aplicação em um caso. Alertas da classe Toast Os Toasts são usados para enviar mensagens rápidas e simples, quando não existe a necessidade de interação com o usuário — por exemplo, na configuração do despertador, há mensagem informando o tempo, em horas e minutos, que falta para despertar. Segundo Leal (2011, documento on-line), o uso de alertas da classe Toast é recomendado quando as mensagens enviadas para o usuário não precisam obstruir o uso do aplicativo, já que esse tipo de alerta não toma o foco da Activity. Outro ponto importante é que, como esse tipo de alerta aparece e some depois de algum tempo, não é possível garantir que o usuário viu a mensagem. Portanto, não deve ser utilizado para mensagens críticas. Veja, na Figura 1, um exemplo de alerta da classe Toast sendo exibido para o usuário ao sair do aplicativo de e-mails sem que a mensagem tenha sido enviada ao destinatário, quando o aplicativo salva o conteúdo digitado antes de ser fechado. Figura 1. Exemplo de um alerta da classe Toast sendo apre- sentado ao usuário. Fonte: Zarelli (2012, documento on-line). De acordo com Zarelli (2012, documento on-line), os Toasts são simples e podem ser facilmente utilizados por desenvolvedores Android iniciantes — em alguns casos, com apenas uma linha de código. A posição-padrão de exibição do Toast é no canto inferior da tela, centralizado horizontalmente, mas pode ser alterada com um método específico. Alertas e a classe Toast2 Personalização de alertas Toast Além da posição, também é possível personalizar o Toast em tamanho, imagens, textos, cores de fundo, entre outras características, o que, para Zarelli (2012, documento on-line), exige um pouco mais de conhecimento do desenvolvedor. Seu uso é essencial para passar feedbacks de ações, sem a necessidade de criação de várias telas só para isso, ou perder a usabilidade da aplicação. Apesar de ter o objetivo de ser simples, pode ser personalizado para dar um aspecto diferenciado ao aplicativo. Uso de alertas por meio do Toast Os princípios de uso dos alertas da classe Toast, como forma de inicialização e manipulação, são os mesmos, independentemente da linguagem de progra- mação utilizada (seja Java ou Kotlin), quando se trata do desenvolvimento de aplicativos nativos na plataforma Android. Em ambas as linguagens, existe uma forma de instanciar os objetos para reaproveitá-los nos alertas mais vezes e outra que resume parte do trecho de código de forma a não armazenar o objeto sem necessidade. Exemplos de uso em Java No primeiro exemplo de uso de alertas Toast, é utilizado o método makeText(), que recebe três parâmetros — o contexto da aplicação, o texto e a duração — e retorna à instância do objeto de alerta criado, para ser apre- sentado com o método show(). Context contexto = getApplicationContext(); String texto = "Mensagem Toast."; int duracao = Toast.LENGTH _ SHORT; Toast toast = Toast.makeText(contexto, texto, duracao); toast.show(); 3Alertas e a classe Toast O método getApplicationContext() retorna o contexto da aplicação que é utilizado como o primeiro parâmetro da função makeText(). A respeito do terceiro parâmetro dessa função, que trata da duração de exibição, segundo Leal (2011, documento on-line), apenas os valores Toast.LENGTH _ LONG e Toast.LENGTH _ SHORT são válidos, não sendo possível especificar valores em segundos ou milissegundos. Outra forma de fazer a mesma coisa, com menos código, seria a seguinte: Toast.makeText(getApplicationContext(), "Mensagem Toast.", Toast.LENGTH _ SHORT).show(); Em ambas as formas de exibir o alerta, o Toast é apresentado na posição- -padrão, que é no canto inferior da tela. Caso seja necessário exibir o alerta em outra posição, é possível alterar por meio do método setGravity, que recebe como parâmetros uma constante da classe Gravity à posição do des- locamento em relação aos eixos x e y, conforme pode ser observado a seguir. Toast toast = Toast.makeText(contexto, "Mensagem Teste com Gravity.", Toast.LENGTH _ LONG); toast.setGravity(Gravity.CENTER _ HORIZONTAL | Gra- vity.CENTER _ VERTICAL, 0, 0); toast.show(); Observe, na Figura 2, como é exibido o alerta quando utilizado o método setGravity com as constantes de Gravity definidas como CENTER _ HO- RIZONTAL e CENTER _ VERTICAL, e os offsets x e y como 0. Alertas e a classe Toast4 Figura 2. Exemplo de um alerta da classe Toast sendo apresentado para o usuário por meio da utilização do método setGravity. Fonte: Cury (2014, documento on-line). Alertas da classe Toast também são utilizados no desenvolvimento Web e podem ser encontrados na documentação das bibliotecas Bootstrap e Materialize. 5Alertas e a classe Toast Acesse os links a seguir para ver a documentação do uso de alertas da classe Toast para o desenvolvimento web, por meio das bibliotecas Bootstrap e Materialize, respectivamente. https://qrgo.page.link/nn9is https://qrgo.page.link/NwNRp Exemplos de uso em Kotlin Se observarmos o primeiro exemplo de uso de alertas na linguagem Kotlin com o primeiro da linguagem Java, é possível perceber o alto grau de semelhança na forma de programar o alerta da classe Toast entre as duas linguagens. val contexto = applicationContext val texto = "Mensagem Toast." val duracao = Toast.LENGTH _ SHORT val toast = Toast.makeText(contexto, texto, duracao) toast.show() Além do exemplo anterior, outro trecho de código que confirma a seme- lhança no uso da classe Toast entre as linguagens é a forma de programar a função com menos código e armazenando com menos dados, conforme o exemplo a seguir: Toast.makeText(aplicativolicationContext, "Mensagem Toast.", Toast.LENGTH _ SHORT).show() Alertas e a classe Toast6 Em se tratando de mudança de posição, o código é tão semelhante quanto o que foi visto nos exemplos anteriores: toast.setGravity(Gravity.TOP or Gravity.LEFT, 0, 0) Dessa forma, pode ser observado que, independentemente da linguagem de programação escolhida, o desenvolvimento de alertas mais básicos é algo que até mesmo desenvolvedores com menos experiência conseguem realizar com facilidade. Veja o tópico a seguir para saber mais sobre como personalizar o alerta, inserindo uma imagem e mais mensagens, cada uma com um estilo diferente. Na linguagem Kotlin, as linhas não terminam com “;”, e as variáveis não possuem tipos fixos predeterminados. Acesse o link a seguir para assistir a um vídeo que explica sobre a diferença de programar para Android entre as linguagens Java e Kotlin. https://qrgo.page.link/GvgTo Alertas aplicados em projetos Consideremos uma empresa fictícia que decidiu criar o conceito de ícones informativos com dicas em seus aplicativos de diversos segmentos, para interagir com seus usuários por meio de envio de alertas com uma imagem, um título e uma descrição. 7Alertas e a classe Toast Como o conceito utilizado pela empresa exige a personalização dos alertas na classe Toast, o programador criouo código-padrão em XML (arquivo chamado de toast.xml) do alerta personalizado para todos os aplicativos da empresa, em que cada um deles terá as imagens e os textos dos alertas de acordo com o tema do contexto onde estão inseridos, conforme segue: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.an- droid.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/titulo" android:layout _ width="wrap _ content" android:layout _ height="wrap _ content" android:text="Título" android:textSize="30sp" android:layout _ marginTop="10sp"/> <TextView android:id="@+id/descricao" android:layout _ width="wrap _ content" android:layout _ height="wrap _ content" android:text="Descrição" android:textSize="18sp"/> </LinearLayout> Veja, na Figura 3, um exemplo de alerta personalizado com um componente de imagem por meio do ImageView, e quatro componentes de texto por meio do TextView. Alertas e a classe Toast8 Figura 3. Exemplo de alerta personalizado, com mais com- ponentes de texto e imagem no corpo do alerta. Fonte: Zarelli (2012, documento on-line). Dessa forma, o programador pode alterar a imagem e os textos do título e da descrição programaticamente em cada um dos aplicativos, como pode ser observado no trecho de código a seguir, utilizado para exibir o alerta personalizado: LayoutInflater layoutInflater = getLayoutInflater(); int layout = R.layout.toast; //toast = nome do arquivo ViewGroup viewGroup = (ViewGroup) findViewById(R. id.toast _ layout _ root); View view = layoutInflater.inflate(layout, viewGroup); TextView titulo = (TextView) view.findViewById(R. id.titulo); titulo.setText(“Título alterado programaticamente”); 9Alertas e a classe Toast TextView descricao = (TextView) view.findViewById(R. id. descricao); descricao.setText(“Descrição alterada programaticamente”); Toast toast = new Toast(this); toast.setDuration(Toast.LENGTH _ LONG); toast.setView(view); toast.show(); Nesse caso, é necessário inflar o leiaute por meio do método Inflate da classe LayoutInflater, com dois parâmetros: o primeiro é o leiaute do Toast, e o segundo é o componente root de exibição, elemento raiz e definido com o id toast _ layout _ root. Depois de alterar os elementos visuais, é necessário instanciar o objeto da classe Toast e definir o leiaute criado no XML, mas agora inflado, como a sua view, por meio do método setView(). Não se esqueça de que, para alterar programaticamente os elementos que desejar, é necessário definir um id no respectivo elemento do arquivo XML e recuperar o componente por meio do método findViewById. Acesse o link a seguir para conhecer mais sobre programação para Android com a linguagem Kotlin, por meio de um projeto de exemplo. https://qrgo.page.link/CQ9TX Alertas e a classe Toast10 CURY, T. E. Enviando mensagens no Android via Toast. Thiago Cury, Porto Alegre, 13 jul. 2014. Disponível em: https://www.devmedia.com.br/exibindo-mensagens-no- -android-com-a-classe-toast/26668. Acesso em: 18 jun. 2019. LEAL, L. [Android SDK] Alertas, Toasts, e Notificações. Fórum Script Brasil, São Paulo, 18 ago. 2011. Disponível em: https://forum.scriptbrasil.com.br/topic/163089-android-sdk- -alertas-toasts-e-notifica%C3%A7%C3%B5es/. Acesso em: 18 jun. 2019. ZARELLI, G. B. Exibindo mensagens no Android com a classe Toast. DevMedia, Rio de Janeiro, 2012. Disponível em: https://www.devmedia.com.br/exibindo-mensagens- -no-android-com-a-classe-toast/26668. Acesso em: 18 jun. 2019. Leituras recomendadas ANDROID Developers. [S. l.: S. n.], 2019. Disponível em: https://developer.android.com. Acesso em: 18 jun. 2019. DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada em aplicativos. 3. ed. Porto Alegre: Bookman, 2016. 618 p. 11Alertas e a classe Toast