Home | History | Annotate | Download | only in patterns
      1 page.title=Navegao com Voltar e Para cima
      2 page.tags="navigation","activity","task","up navigation","back navigation"
      3 page.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>Implementao de navegao efetiva</p>
     10   </div>
     11 </a>
     12 
     13 <p itemprop="description">A navegao consistente  um componente essencial da experincia geral do usurio. Poucas coisas deixam os
     14 usurios mais frustrados do que uma navegao bsica que se comporta de forma inconsistente ou inesperada. O Android 3.0
     15 introduziu mudanas significativas no comportamento global da navegao. Seguir cuidadosamente as
     16 diretrizes de Voltar e Para Cima tornar a navegao em seu aplicativo previsvel e confivel para os usurios.</p>
     17 <p>O Android 2.3 e anteriores se baseavam no boto <em>Voltar</em> do sistema para dar suporte  navegao dentro de um
     18 aplicativo. Com a introduo de barras de ao no Android 3.0, um segundo mecanismo de navegao apareceu:
     19 o boto <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 boto Para Cima  usado para navegar dentro de um aplicativo com base nos relacionamentos hierrquicos
     26 entre telas. Por exemplo, se a tela A exibe uma lista de itens e selecionar um item leva 
     27 tela B (que apresenta aquele item em mais detalhes), a tela B deve oferecer um boto Para Cima que
     28 volte  tela A.</p>
     29 <p>Se determinada tela  a superior na hierarquia de um aplicativo (ou seja, a tela inicial do aplicativo), ela no deve apresentar um boto
     30 Para Cima.</p>
     31 
     32 <p>O boto Voltar do sistema  usado para navegar, em ordem cronolgica inversa, pelo histrico
     33 de telas em que o usurio esteve recentemente. Ele  geralmente baseado em relacionamentos temporais
     34 entre telas, em vez de na hierarquia do aplicativo.</p>
     35 
     36 <p>Quando a tela visualizada anteriormente tambm for a superior hierrquica imediata da tela atual, pressionar
     37 o boto Voltar tem o mesmo resultado que pressionar um boto Para Cima &mdash; essa  uma ocorrncia
     38 comum. No entanto, diferentemente do boto Para Cima, que garante que o usurio permanea dentro do aplicativo, o boto
     39 Voltar pode retornar o usurio  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 boto Voltar tambm suporta alguns comportamentos no vinculados diretamente  navegao entre telas:
     44 </p>
     45 <ul>
     46 <li>Descarta janelas flutuantes (caixas de dilogo, pop-ups)</li>
     47 <li>Descarta barras de ao 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">Navegao dentro do seu aplicativo</h2>
     51 
     52 <h4>Navegao para telas com vrios pontos de entrada</h4>
     53 <p>Algumas vezes, uma tela no tem uma posio rigorosa dentro da hierarquia do aplicativo e pode ser acessada
     54 de vrios pontos de entrada &mdash; como uma tela de configuraes que pode ser acessada de qualquer outra tela
     55 no aplicativo. Nesse caso, o boto Para Cima deve escolher voltar  tela anterior, comportando-se
     56 de forma idntica a Voltar.</p>
     57 <h4>Mudana de vista dentro de uma tela</h4>
     58 <p>Mudar opes de vista de uma tela no muda o comportamento de Para Cima nem de Voltar: a tela ainda
     59 estar no mesmo lugar dentro da hierarquia do aplicativo e nenhum histrico de navegao ser criado.</p>
     60 <p>Exemplos de tais mudanas de vista so:</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 (tambm chamadas de abas recolhidas)</li>
     64 <li>Filtrar uma lista</li>
     65 <li>Classificar uma lista</li>
     66 <li>Mudar caractersticas de exibio (como mudar o zoom)</li>
     67 </ul>
     68 <h4>Navegao entre telas de mesmo nvel</h4>
     69 <p>Quando o aplicativo suporta navegao de uma lista de itens para uma vista de detalhes de um desses itens,
     70 frequentemente  desejvel dar suporte  navegao de direo daquele item para outro anterior ou
     71 posterior a ele na lista. Por exemplo, no Gmail,  fcil deslizar para a esquerda ou para a direita em uma
     72 conversa para visualizar uma mais nova ou mais antiga na mesma Caixa de entrada. Assim como ao mudar a vista dentro de uma tela, tal
     73 navegao no 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 exceo notvel a isso ocorre ao navegar entre vistas de detalhes relacionadas no
     78 vinculadas pela lista de referncia &mdash; por exemplo, ao navegar na Play Store entre aplicativos
     79 do mesmo desenvolvedor ou lbuns do mesmo artista. Nesses casos, seguir cada link cria
     80 um histrico, fazendo com que o boto Voltar passe por cada tela visualizada anteriormente. Para Cima deve continuar a
     81 ignorar essas telas relacionadas e navegar para a tela do continer 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
     86 vista de detalhe. Estendendo o exemplo da Play Store acima, imagine que o usurio navegou do ltimo
     87 Livro visualizado para os detalhes da adaptao do Filme. Nesse caso, Para Cima pode retornar a um continer
     88 (filmes) pelo qual o usurio no navegou anteriormente.</p>
     89 
     90 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
     91 
     92 <h2 id="into-your-app">Navegao para o seu aplicativo pelos widgets de tela inicial e notificaes</h2>
     93 
     94 <p>Voc pode usar widgets de tela inicial ou notificaes para ajudar os usurios a navegar diretamente para telas
     95 profundas na hierarquia do seu aplicativo. Por exemplo, o widget Caixa de Entrada do Gmail e a notificao de nova mensagem podem
     96 ignorar a tela Caixa de Entrada, levando o usurio diretamente a uma vista de conversa.</p>
     97 
     98 <p>Para esses dois casos, trate o boto 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
    102 aplicativo</em>, Para Cima deve navegar para essa tela.</li>
    103 <li><em>Caso contrrio</em>, Para Cima deve navegar para a tela superior ("Tela inicial") do aplicativo.</li>
    104 </ul>
    105 
    106 <p>No caso do boto Voltar, voc deve tornar a navegao mais previsvel inserindo o caminho de navegao para cima
    107 completo na pilha de retorno da tarefa at a tela superior do aplicativo. Isso permite que usurios
    108 que se esqueceram de como entraram no aplicativo naveguem para a tela superior do aplicativo
    109 antes de sarem.</p>
    110 
    111 <p>Como exemplo, o widget da Tela inicial do Gmail tem um boto para mergulhar diretamente para a tela
    112 de composio. Para Cima ou Voltar na tela de composio deve levar o usurio  Caixa de Entrada e, de l, o
    113 boto Voltar continua at a Tela inicial.</p>
    114 
    115 <img src="{@docRoot}design/media/navigation_from_outside_back.png">
    116 
    117 <h4>Notificaes indiretas</h4>
    118 
    119 <p>Quando o aplicativo precisa apresentar simultaneamente informaes sobre vrios eventos, ele pode usar
    120 uma nica notificao que direcione o usurio a uma tela intersticial. Essa tela resume esses
    121 eventos e fornece caminhos para que o usurio mergulhe profundamente no aplicativo. Notificaes desse estilo so
    122 chamadas de <em>notificaes indiretas</em>.</p>
    123 
    124 <p>Diferentemente de em notificaes padro (diretas), pressionar Voltar em uma tela intersticial da
    125 notificao indireta retorna o usurio ao ponto em que a notificao foi acionada &mdash; nenhuma
    126 tela adicional  inserida na pilha de retorno. Quando o usurio prossegue para o aplicativo da
    127 tela intersticial, Para Cima e Voltar se comportam como em notificaes padro, como descrito acima:
    128 navegando dentro do aplicativo em vez de voltar  tela intersticial.</p>
    129 
    130 <p>Por exemplo, suponha que um usurio no Gmail receba uma notificao indireta do Agenda. Tocar nessa
    131 notificao abrir a tela intersticial, que exibir lembretes para vrios
    132 eventos. Tocar em Voltar na tela intersticial retornar o usurio ao Gmail. Tocar em um determinado evento
    133 levar o usurio da tela intersticial ao aplicativo completo do Agenda para exibir detalhes do
    134 evento. Dos detalhes do evento, Para Cima e Voltar navegam para a vista de nvel superior do Agenda.</p>
    135 
    136 <img src="{@docRoot}design/media/navigation_indirect_notification.png">
    137 
    138 <h4>Notificaes pop-up</h4>
    139 
    140 <p><em>Notificaes pop-up</em> ignoram a gaveta de notificaes, aparecendo diretamente na
    141 frente do usurio. Elas so usadas raramente e <strong>devem ser reservadas para ocasies em que uma resposta
    142 rpida e a interrupo do contexto do usurio sejam necessrias</strong>. Por exemplo,
    143 o Talk usa esse estilo para alertar o usurio sobre um convite de um amigo para participar de uma conversa com vdeo, j que este
    144 convite expirar automaticamente depois de alguns segundos.</p>
    145 
    146 <p>Em termos do comportamento da navegao, notificaes pop-up seguem de perto o comportamento da tela intersticial
    147 de uma notificao indireta. Voltar descarta a notificao pop-up. Se o usurio navegar
    148 da janela pop-up para o aplicativo que realizou a notificao, Para Cima e Voltar seguem as regras de notificaes padro,
    149 navegando dentro do aplicativo.</p>
    150 
    151 <img src="{@docRoot}design/media/navigation_popup_notification.png">
    152 
    153 <h2 id="between-apps">Navegao entre aplicativos</h2>
    154 
    155 <p>Um dos pontos fortes fundamentais do sistema Android  a capacidade dos aplicativos de ativar
    156 uns aos outros, dando ao usurio a capacidade de navegar diretamente de um aplicativo para outro. Por exemplo, um
    157 aplicativo que precisa capturar uma foto pode ativar o aplicativo Cmera, que devolver a foto
    158 ao aplicativo que o chamou. Esse  um imenso benefcio para o desenvolvedor, que pode aproveitar
    159 facilmente cdigo de outros aplicativos, e para o usurio, que tem uma experincia consistente para aes
    160 comumente realizadas.</p>
    161 
    162 <p>Para entender a navegao entre aplicativos,  importante entender o comportamento da estrutura de trabalho do Android
    163 discutida abaixo.</p>
    164 
    165 <h4>Atividades, tarefas e intenes</h4>
    166 
    167 <p>No Android, uma <strong>atividade</strong>  um componente do aplicativo que define uma tela de
    168 informaes e todas as aes associadas que o usurio pode executar. Seu aplicativo  uma coleo de
    169 atividades, consistindo em atividades que voc cria e naquelas que reutiliza de outros aplicativos.</p>
    170 
    171 <p>Uma <strong>tarefa</strong>  a sequncia de atividades que um usurio segue para atingir um objetivo. Uma
    172 nica tarefa pode usar atividades apenas de um aplicativo ou pode retirar atividades de uma srie
    173 de outros aplicativos.</p>
    174 
    175 <p>Uma <strong>inteno</strong>  um mecanismo para que um aplicativo sinalize que gostaria a assistncia de outro
    176 aplicativo para realizar uma ao. As atividades de um aplicativo podem indicar a que intenes
    177 ele responde. Para intenes comuns, como "Compartilhar", o usurio pode ter vrios aplicativos
    178 instalados que atendam a essa solicitao.</p>
    179 
    180 <h4>Exemplo: navegao entre aplicativos para suporte a compartilhamento</h4>
    181 
    182 <p>Para entender como atividades, tarefas e intenes funcionam juntas, entenda como um aplicativo permite que usurios
    183 compartilhem contedo usando outro aplicativo. Por exemplo, executar o aplicativo Play Store na tela inicial comea
    184 uma nova Tarefa A (veja a figura baixo). Depois de navegar pela Play Store e tocar em um livro em promoo
    185 para ver os detalhes, o usurio permanecer na mesma tarefa, estendendo-a ao adicionar atividades. Acionar
    186 a ao Compartilhar exibe ao usurio uma caixa de dilogo listando cada uma das atividades (de diferentes aplicativos)
    187 que foram registradas para tratar a inteno Compartilhar.</p>
    188 
    189 <img src="{@docRoot}design/media/navigation_between_apps_inward.png">
    190 
    191 <p>Quando o usurio seleciona o compartilhamento via Gmail, a atividade de composio do Gmail  adicionada como uma continuao da
    192 Tarefa A &mdash; nenhuma tarefa nova  criada. Se o Gmail tivesse a prpria tarefa em execuo em segundo plano, ela no
    193 seria afetada.</p>
    194 
    195 <p>Da atividade de composio, enviar a mensagem ou tocar no boto Voltar retornar o usurio 
    196 atividade de detalhes do livro. Toques subsequentes em Voltar continuaro a navegar para trs pela Play
    197 Store at chegar  Pgina 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 composio, o usurio indica que deseja permanecer no
    202 Gmail. A atividade da lista de conversas do Gmail  exibida e uma nova Tarefa B  criada para ela. Novas tarefas
    203 so sempre vinculadas  Pgina 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 usurio pode voltar a ela mais tarde (por exemplo, via tela
    208 Recentes). Se o Gmail j tivesse a prpria tarefa em execuo em segundo plano, ela seria substituda
    209 pela Tarefa B &mdash; o contexto anterior  abandonado em favor do novo objetivo do usurio.</p>
    210 
    211 <p>Quando o aplicativo  registrado para tratar intenes com uma atividade em um ponto profundo da hierarquia do aplicativo,
    212 consulte <a href="#into-your-app">Navegao para o seu aplicativo pelos widgets de tela
    213 inicial e notificaes</a> para ver orientaes sobre como especificar a navegao Para Cima.</p>
    214