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 — 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 — 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 — 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 — 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 — 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 — 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