quarta-feira, 30 de outubro de 2013

Dialogs

Olá à todos.

Neste post será apresentado o conceito de Dialogs em Android.

Um Dialog é uma estrutura de alerta mais complexa que um Toast. Um Dialog disponibiliza ao usuário decisões e informações adicionais requeridas pela aplicação para continuar uma determinada tarefa. Estas requisições podem ser tanto um simples Cancel/OK como decisões mais complexas como layouts perguntando ao usuário para ajustar configurações ou entrar com um texto.

Um Dialog possui três áreas principais:



  • Título opcional → O título introduz o conteúdo do seu Dialog. Ele pode, por exemplo, identificar o nome de uma configuração que o usuário irá mudar, ou requerer uma decisão.
  • Área de conteúdo → O conteúdo de um Dialog varia bastante. Para Dialog’s de configuração, ele deve conter elementos de interface como: Slider, Text View, Check Box, Radio Button, e permitir ao usuário mudar as configurações do aplicativo. Em outros casos, como em alertas, o conteúdo deve consistir apenas de um texto que fornece mais informações para uma decisão do usuário.
  • Botões de ação → Botões de ação são tipicamente Cancel e/ou OK, com OK indicando a preferida ou mais provável ação. Entretanto, se as opções consistem de ações específicas, como Close ou Wait, então todas os botões devem ser verbos ativos, e as ações devem seguir as seguintes regras:
    • A ação de des-confirmação de um Dialog deve estar sempre do lado esquerdo. Estas ações retornam o usuário para o estado anterior.
    • A ação de afirmação deve estar do lado direito.

Exemplos de Dialog:





Existem diversos tipos de Dialog. Os mais comuns são: SimpleAlertDialog, ListDialog, ProgressDialog, ConfirmDialog, TimePicker, DatePicker. Mas também existem outros tipos também: MultipleChoiceDialog, CustomDialog.

O que veremos em sequência serão os códigos-fonte que criam cada Dialog, e seu resultado gráfico.


SimpleAlertDialog

Neste tipo de Dialog, é mostrada na tela uma simples mensagem. Eis o código-fonte que a gera:



Acima podemos ver que é utilizada uma classe chamada DialogHelper. Ela nada mais é do que uma classe que contém todas as chamadas de Dialog que faremos nos exemplos desta seção da apostila. Abaixo temos o método showSimpleAlert().


E eis o resultado gráfico deste Dialog:


ListDialog

Neste tipo de Dialog, é mostrada na tela uma lista de mensagens. Eis o código-fonte que a gera:


Eis o método da DialogHelper que a implementa:


E a representação gráfica deste Dialog.


ProgressDialog 

Com certeza, este é um dos tipos de Dialog mais utilizados. Neste tipo de Dialog, é mostrada na tela uma barra de progresso. Eis o código-fonte que a gera:



Eis o método da DialogHelper que a implementa:


E a representação gráfica deste Dialog:





Confirm Dialog

Neste tipo de Dialog, é mostrada na tela uma pergunta e duas opções de escolha para o usuário tomar. Eis o código-fonte que o gera:



Eis o método da DialogHelper que a implementa:



E a representação gráfica deste Dialog:


TimePicker

Neste tipo de Dialog, é mostrada na tela uma interface que nos permite montar uma hora corrente. Eis o código-fonte que o gera:


Eis o método da DialogHelper que a implementa:



E a representação gráfica deste Dialog:





DatePicker

Neste tipo de Dialog, é mostrada na tela uma interface que nos permite montar uma data. Eis o código-fonte que o gera:



Eis o método da DialogHelper que a implementa:



E a representação gráfica deste Dialog:





MultipleChoiceDialog

Neste tipo de Dialog, é mostrada na tela uma interface que nos permite montar uma data. Eis o código-fonte que o gera:



Eis o método da DialogHelper que a implementa:



E a representação gráfica deste Dialog:





CustomDialog

Por fim, temos a representação de um Dialog totalmente customizado. Abaixo temos seu layout em XML:

E como o layout é chamado na MainActivity.java:



Eis o método da DialogHelper que o implementa:



E finalmente, a representação gráfica deste Dialog:



-----

E aqui terminamos mais um tópico do blog.

Caso alguém tenha uma dúvida, crítica ou sugestão, sinta-se à vontade.

Um comentário: