• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Navegação com Voltar e Para cima
2page.tags="navigation","activity","task","up navigation","back navigation"
3page.image=/design/media/navigation_between_siblings_gmail.png
4@jd:body
5
6<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html">
7  <div>
8    <h3>Documentos do desenvolvedor</h3>
9    <p>Implementação de navegação efetiva</p>
10  </div>
11</a>
12
13<p itemprop="description">A navegação consistente é um componente essencial da experiência geral do usuário. Poucas coisas deixam os
14usuários mais frustrados do que uma navegação básica que se comporta de forma inconsistente ou inesperada. O Android 3.0
15introduziu mudanças significativas no comportamento global da navegação. Seguir cuidadosamente as
16diretrizes de Voltar e Para Cima tornará a navegação em seu aplicativo previsível e confiável para os usuários.</p>
17<p>O Android 2.3 e anteriores se baseavam no botão <em>Voltar</em> do sistema para dar suporte à navegação dentro de um
18aplicativo. Com a introdução de barras de ação no Android 3.0, um segundo mecanismo de navegação apareceu:
19o botão <em>Para Cima</em>, consistindo no ícone do aplicativo e em um cursor para a esquerda.</p>
20
21<img src="{@docRoot}design/media/navigation_with_back_and_up.png">
22
23<h2 id="up-vs-back">Para Cima vs Voltar</h2>
24
25<p>O botão Para Cima é usado para navegar dentro de um aplicativo com base nos relacionamentos hierárquicos
26entre telas. Por exemplo, se a tela A exibe uma lista de itens e selecionar um item leva à
27tela B (que apresenta aquele item em mais detalhes), a tela B deve oferecer um botão Para Cima que
28volte à tela A.</p>
29<p>Se determinada tela é a superior na hierarquia de um aplicativo (ou seja, a tela inicial do aplicativo), ela não deve apresentar um botão
30Para Cima.</p>
31
32<p>O botão Voltar do sistema é usado para navegar, em ordem cronológica inversa, pelo histórico
33de telas em que o usuário esteve recentemente. Ele é geralmente baseado em relacionamentos temporais
34entre telas, em vez de na hierarquia do aplicativo.</p>
35
36<p>Quando a tela visualizada anteriormente também for a superior hierárquica imediata da tela atual, pressionar
37o botão Voltar tem o mesmo resultado que pressionar um botão Para Cima &mdash; essa é uma ocorrência
38comum. No entanto, diferentemente do botão Para Cima, que garante que o usuário permaneça dentro do aplicativo, o botão
39Voltar pode retornar o usuário à tela inicial ou até mesmo a um aplicativo diferente.</p>
40
41<img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
42
43<p>O botão Voltar também suporta alguns comportamentos não vinculados diretamente à navegação entre telas:
44</p>
45<ul>
46<li>Descarta janelas flutuantes (caixas de diálogo, pop-ups)</li>
47<li>Descarta barras de ação contextuais e remove o destaque dos itens selecionados</li>
48<li>Oculta o teclado da tela (IME)</li>
49</ul>
50<h2 id="within-app">Navegação dentro do seu aplicativo</h2>
51
52<h4>Navegação para telas com vários pontos de entrada</h4>
53<p>Algumas vezes, uma tela não tem uma posição rigorosa dentro da hierarquia do aplicativo e pode ser acessada
54de vários pontos de entrada &mdash; como uma tela de configurações que pode ser acessada de qualquer outra tela
55no aplicativo. Nesse caso, o botão Para Cima deve escolher voltar à tela anterior, comportando-se
56de forma idêntica a Voltar.</p>
57<h4>Mudança de vista dentro de uma tela</h4>
58<p>Mudar opções de vista de uma tela não muda o comportamento de Para Cima nem de Voltar: a tela ainda
59estará no mesmo lugar dentro da hierarquia do aplicativo e nenhum histórico de navegação será criado.</p>
60<p>Exemplos de tais mudanças de vista são:</p>
61<ul>
62<li>Alternar vistas usando guias e/ou deslizando para a esquerda e para a direita</li>
63<li>Alternar vistas usando um menu suspenso (também chamadas de abas recolhidas)</li>
64<li>Filtrar uma lista</li>
65<li>Classificar uma lista</li>
66<li>Mudar características de exibição (como mudar o zoom)</li>
67</ul>
68<h4>Navegação entre telas de mesmo nível</h4>
69<p>Quando o aplicativo suporta navegação de uma lista de itens para uma vista de detalhes de um desses itens,
70frequentemente é desejável dar suporte à navegação de direção daquele item para outro anterior ou
71posterior a ele na lista. Por exemplo, no Gmail, é fácil deslizar para a esquerda ou para a direita em uma
72conversa para visualizar uma mais nova ou mais antiga na mesma Caixa de entrada. Assim como ao mudar a vista dentro de uma tela, tal
73navegação não muda o comportamento de Para Cima ou Voltar.</p>
74
75<img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
76
77<p>No entanto, uma exceção notável a isso ocorre ao navegar entre vistas de detalhes relacionadas não
78vinculadas pela lista de referência &mdash; por exemplo, ao navegar na Play Store entre aplicativos
79do mesmo desenvolvedor ou álbuns do mesmo artista. Nesses casos, seguir cada link cria
80um histórico, fazendo com que o botão Voltar passe por cada tela visualizada anteriormente. Para Cima deve continuar a
81ignorar essas telas relacionadas e navegar para a tela do contêiner visualizada mais recentemente.</p>
82
83<img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
84
85<p>Você tem a capacidade de deixar o comportamento de Para Cima ainda mais inteligente com base em seu conhecimento da
86vista de detalhe. Estendendo o exemplo da Play Store acima, imagine que o usuário navegou do último
87Livro visualizado para os detalhes da adaptação do Filme. Nesse caso, Para Cima pode retornar a um contêiner
88(filmes) pelo qual o usuário não navegou anteriormente.</p>
89
90<img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
91
92<h2 id="into-your-app">Navegação para o seu aplicativo pelos widgets de tela inicial e notificações</h2>
93
94<p>Você pode usar widgets de tela inicial ou notificações para ajudar os usuários a navegar diretamente para telas
95profundas na hierarquia do seu aplicativo. Por exemplo, o widget Caixa de Entrada do Gmail e a notificação de nova mensagem podem
96ignorar a tela Caixa de Entrada, levando o usuário diretamente a uma vista de conversa.</p>
97
98<p>Para esses dois casos, trate o botão Para Cima da seguinte forma:</p>
99
100<ul>
101<li><em>Se a tela de destino é normalmente acessada de uma determinada tela dentro do
102aplicativo</em>, Para Cima deve navegar para essa tela.</li>
103<li><em>Caso contrário</em>, Para Cima deve navegar para a tela superior ("Tela inicial") do aplicativo.</li>
104</ul>
105
106<p>No caso do botão Voltar, você deve tornar a navegação mais previsível inserindo o caminho de navegação para cima
107completo na pilha de retorno da tarefa até a tela superior do aplicativo. Isso permite que usuários
108que se esqueceram de como entraram no aplicativo naveguem para a tela superior do aplicativo
109antes de saírem.</p>
110
111<p>Como exemplo, o widget da Tela inicial do Gmail tem um botão para mergulhar diretamente para a tela
112de composição. Para Cima ou Voltar na tela de composição deve levar o usuário à Caixa de Entrada e, de lá, o
113botão Voltar continua até a Tela inicial.</p>
114
115<img src="{@docRoot}design/media/navigation_from_outside_back.png">
116
117<h4>Notificações indiretas</h4>
118
119<p>Quando o aplicativo precisa apresentar simultaneamente informações sobre vários eventos, ele pode usar
120uma única notificação que direcione o usuário a uma tela intersticial. Essa tela resume esses
121eventos e fornece caminhos para que o usuário mergulhe profundamente no aplicativo. Notificações desse estilo são
122chamadas de <em>notificações indiretas</em>.</p>
123
124<p>Diferentemente de em notificações padrão (diretas), pressionar Voltar em uma tela intersticial da
125notificação indireta retorna o usuário ao ponto em que a notificação foi acionada &mdash; nenhuma
126tela adicional é inserida na pilha de retorno. Quando o usuário prossegue para o aplicativo da
127tela intersticial, Para Cima e Voltar se comportam como em notificações padrão, como descrito acima:
128navegando dentro do aplicativo em vez de voltar à tela intersticial.</p>
129
130<p>Por exemplo, suponha que um usuário no Gmail receba uma notificação indireta do Agenda. Tocar nessa
131notificação abrirá a tela intersticial, que exibirá lembretes para vários
132eventos. Tocar em Voltar na tela intersticial retornará o usuário ao Gmail. Tocar em um determinado evento
133levará o usuário da tela intersticial ao aplicativo completo do Agenda para exibir detalhes do
134evento. Dos detalhes do evento, Para Cima e Voltar navegam para a vista de nível superior do Agenda.</p>
135
136<img src="{@docRoot}design/media/navigation_indirect_notification.png">
137
138<h4>Notificações pop-up</h4>
139
140<p><em>Notificações pop-up</em> ignoram a gaveta de notificações, aparecendo diretamente na
141frente do usuário. Elas são usadas raramente e <strong>devem ser reservadas para ocasiões em que uma resposta
142rápida e a interrupção do contexto do usuário sejam necessárias</strong>. Por exemplo,
143o Talk usa esse estilo para alertar o usuário sobre um convite de um amigo para participar de uma conversa com vídeo, já que este
144convite expirará automaticamente depois de alguns segundos.</p>
145
146<p>Em termos do comportamento da navegação, notificações pop-up seguem de perto o comportamento da tela intersticial
147de uma notificação indireta. Voltar descarta a notificação pop-up. Se o usuário navegar
148da janela pop-up para o aplicativo que realizou a notificação, Para Cima e Voltar seguem as regras de notificações padrão,
149navegando dentro do aplicativo.</p>
150
151<img src="{@docRoot}design/media/navigation_popup_notification.png">
152
153<h2 id="between-apps">Navegação entre aplicativos</h2>
154
155<p>Um dos pontos fortes fundamentais do sistema Android é a capacidade dos aplicativos de ativar
156uns aos outros, dando ao usuário a capacidade de navegar diretamente de um aplicativo para outro. Por exemplo, um
157aplicativo que precisa capturar uma foto pode ativar o aplicativo Câmera, que devolverá a foto
158ao aplicativo que o chamou. Esse é um imenso benefício para o desenvolvedor, que pode aproveitar
159facilmente código de outros aplicativos, e para o usuário, que tem uma experiência consistente para ações
160comumente realizadas.</p>
161
162<p>Para entender a navegação entre aplicativos, é importante entender o comportamento da estrutura de trabalho do Android
163discutida abaixo.</p>
164
165<h4>Atividades, tarefas e intenções</h4>
166
167<p>No Android, uma <strong>atividade</strong> é um componente do aplicativo que define uma tela de
168informações e todas as ações associadas que o usuário pode executar. Seu aplicativo é uma coleção de
169atividades, consistindo em atividades que você cria e naquelas que reutiliza de outros aplicativos.</p>
170
171<p>Uma <strong>tarefa</strong> é a sequência de atividades que um usuário segue para atingir um objetivo. Uma
172única tarefa pode usar atividades apenas de um aplicativo ou pode retirar atividades de uma série
173de outros aplicativos.</p>
174
175<p>Uma <strong>intenção</strong> é um mecanismo para que um aplicativo sinalize que gostaria a assistência de outro
176aplicativo para realizar uma ação. As atividades de um aplicativo podem indicar a que intenções
177ele responde. Para intenções comuns, como "Compartilhar", o usuário pode ter vários aplicativos
178instalados que atendam a essa solicitação.</p>
179
180<h4>Exemplo: navegação entre aplicativos para suporte a compartilhamento</h4>
181
182<p>Para entender como atividades, tarefas e intenções funcionam juntas, entenda como um aplicativo permite que usuários
183compartilhem conteúdo usando outro aplicativo. Por exemplo, executar o aplicativo Play Store na tela inicial começa
184uma nova Tarefa A (veja a figura baixo). Depois de navegar pela Play Store e tocar em um livro em promoção
185para ver os detalhes, o usuário permanecerá na mesma tarefa, estendendo-a ao adicionar atividades. Acionar
186a ação Compartilhar exibe ao usuário uma caixa de diálogo listando cada uma das atividades (de diferentes aplicativos)
187que foram registradas para tratar a intenção Compartilhar.</p>
188
189<img src="{@docRoot}design/media/navigation_between_apps_inward.png">
190
191<p>Quando o usuário seleciona o compartilhamento via Gmail, a atividade de composição do Gmail é adicionada como uma continuação da
192Tarefa A &mdash; nenhuma tarefa nova é criada. Se o Gmail tivesse a própria tarefa em execução em segundo plano, ela não
193seria afetada.</p>
194
195<p>Da atividade de composição, enviar a mensagem ou tocar no botão Voltar retornará o usuário à
196atividade de detalhes do livro. Toques subsequentes em Voltar continuarão a navegar para trás pela Play
197Store até chegar à Página inicial.</p>
198
199<img src="{@docRoot}design/media/navigation_between_apps_back.png">
200
201<p>No entanto, tocando em Para Cima na atividade de composição, o usuário indica que deseja permanecer no
202Gmail. A atividade da lista de conversas do Gmail é exibida e uma nova Tarefa B é criada para ela. Novas tarefas
203são sempre vinculadas à Página inicial, portanto, tocar em Voltar na lista de conversas retorna a ela.</p>
204
205<img src="{@docRoot}design/media/navigation_between_apps_up.png">
206
207<p>A Tarefa A persiste no segundo plano e o usuário pode voltar a ela mais tarde (por exemplo, via tela
208Recentes). Se o Gmail já tivesse a própria tarefa em execução em segundo plano, ela seria substituída
209pela Tarefa B &mdash; o contexto anterior é abandonado em favor do novo objetivo do usuário.</p>
210
211<p>Quando o aplicativo é registrado para tratar intenções com uma atividade em um ponto profundo da hierarquia do aplicativo,
212consulte <a href="#into-your-app">Navegação para o seu aplicativo pelos widgets de tela
213inicial e notificações</a> para ver orientações sobre como especificar a navegação Para Cima.</p>
214