Home | History | Annotate | Download | only in patterns
      1 page.title=Navegacin con los botones Back y Up
      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 para desarrolladores</h3>
      9     <p>Implementacin de la navegacin eficiente</p>
     10   </div>
     11 </a>
     12 
     13 <p itemprop="description">La navegacin coherente es un componente fundamental de la experiencia general del usuario. Pocas situaciones frustran ms a los
     14 usuarios que la navegacin bsica que se comporta de forma irregular e inesperada. En Android 3.0,
     15 se introdujeron cambios significativos en el comportamiento global de la navegacin. Si sigues detalladamente
     16 las pautas de navegacin con los botones Back y Up, la navegacin en tu aplicacin ser predecible y confiable para los usuarios.</p>
     17 <p>En Android 2.3 y versiones anteriores, se confi en el botn <em>Back</em> del sistema para respaldar la navegacin dentro de una
     18 aplicacin. Con la introduccin de las barras de accin en Android 3.0, apareci un segundo mecanismo de navegacin:
     19 el botn <em>Up</em>, que consiste en el icono de la aplicacin y una pequea flecha a la izquierda.</p>
     20 
     21 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
     22 
     23 <h2 id="up-vs-back">Up en comparacin con Back</h2>
     24 
     25 <p>El botn Up se utiliza para navegar dentro de una aplicacin sobre la base de las relaciones jerrquicas
     26 entre pantallas. Por ejemplo, si en la pantalla A se muestra una lista de elementos y, si se selecciona un elemento, se conduce al usuario a la
     27 pantalla B (en la que se presenta ese elemento de forma ms detallada), entonces en la pantalla B se debe mostrar el botn Up para regresar
     28 a la pantalla A.</p>
     29 <p>Si una pantalla aparece en la parte superior de una aplicacin (es decir, en el inicio de la aplicacin), no debes incluir el botn Up
     30 .</p>
     31 
     32 <p>El botn Back del sistema se utiliza para navegar, en orden cronolgico inverso, por el historial
     33 de pantallas en las que recientemente trabaj el usuario. Generalmente, se basa en las relaciones temporales
     34 entre pantallas, y no en la jerarqua de la aplicacin.</p>
     35 
     36 <p>Cuando la pantalla que se visit anteriormente es tambin el componente jerrquico primario de la pantalla actual, si se presiona el botn
     37 Back, se obtendr el mismo resultado que si se presiona el botn Up, y esto es algo que sucede a
     38 menudo. Sin embargo, a diferencia del botn Up, mediante el cual se garantiza que el usuario permanezca en la aplicacin, el botn Back
     39 le permite al usuario regresar a la pantalla de inicio o, incluso, a otra aplicacin.</p>
     40 
     41 <img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
     42 
     43 <p>El botn Back tambin permite diferentes comportamientos que no estn vinculados directamente con la navegacin entre pantallas:
     44 </p>
     45 <ul>
     46 <li>descartar las ventanas flotantes (cuadros de dilogo o emergentes);</li>
     47 <li>descartar las barras de accin contextuales y eliminar el resaltado de los elementos seleccionados;</li>
     48 <li>ocultar el teclado en la pantalla (IME [Editores de mtodos de entrada]).</li>
     49 </ul>
     50 <h2 id="within-app">Navegacin dentro de tu aplicacin</h2>
     51 
     52 <h4>Navegacin hacia pantallas con mltiples puntos de entrada</h4>
     53 <p>En algunos casos, las pantallas no tienen una posicin fija dentro de la jerarqua de la aplicacin, y se puede acceder a ellas
     54 desde mltiples puntos de entrada (como la pantalla de configuracin, a la que se puede acceder desde cualquier otra pantalla
     55 de la aplicacin). En este caso, el botn Up debe permitir regresar a la pantalla remitente, por lo que se comportara
     56 de forma idntica al botn Back.</p>
     57 <h4>Cambio de vista dentro de una pantalla</h4>
     58 <p>Cambiar las opciones de vista de una pantalla no modifica el comportamiento de los botones Up o Back: la pantalla sigue estando
     59 en el mismo lugar dentro de la jerarqua de la aplicacin y no se crea ningn historial de navegacin nuevo.</p>
     60 <p>Entre los ejemplos de cambios en las vistas, se encuentran los siguientes:</p>
     61 <ul>
     62 <li>cambio de vistas mediante las pestaas o los deslizamientos de izquierda a derecha;</li>
     63 <li>cambio de vistas mediante un men desplegable (tambin conocido como pestaas colapsadas);</li>
     64 <li>filtrado de listas;</li>
     65 <li>clasificacin de listas;</li>
     66 <li>modificacin de las caractersticas de la pantalla (como el zoom).</li>
     67 </ul>
     68 <h4>Navegacin entre pantallas relacionadas</h4>
     69 <p>Si tu aplicacin es compatible con la navegacin desde una lista de elementos hacia una vista de detalles de alguno de esos elementos, generalmente,
     70 es preferible respaldar la navegacin de direccin desde ese elemento a otro anterior
     71 o siguiente en la lista. Por ejemplo, en Gmail, es fcil deslizarse hacia la izquierda o la derecha desde una conversacin
     72 para ver una conversacin anterior o ms nueva en la misma bandeja de entrada. Al igual que cuando se cambia la vista dentro de una pantalla, en este tipo de
     73 navegacin no se cambia el comportamiento de los botones Up o Back.</p>
     74 
     75 <img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
     76 
     77 <p>Sin embargo, una excepcin importante a este caso se presenta cuando se explora entre vistas de detalles relacionadas que no estn vinculadas
     78 mediante la lista que se est utilizando; por ejemplo, cuando se explora en Play Store entre diferentes aplicaciones
     79 del mismo desarrollador o entre lbumes del mismo artista. En estos casos, si se sigue cada vnculo, esto queda registrado en el
     80 historial, por lo que, a travs del botn Back, se regresa a cada pantalla que se visit anteriormente. El botn Up debe seguir omitiendo
     81 estas pantallas relacionadas y navegar hacia la pantalla del contenedor visitada ms recientemente.</p>
     82 
     83 <img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
     84 
     85 <p>Puedes lograr que el comportamiento del botn Up sea incluso ms inteligente teniendo en cuenta tus conocimientos de la vista
     86 detallada. Si extendemos el ejemplo de Play Store mencionado antes, imaginemos que el usuario naveg desde el ltimo
     87 libro visto hacia los detalles de la adaptacin de la pelcula. En ese caso, mediante el botn Up podrs regresar a un contenedor
     88 (Pelculas) por el que el usuario no naveg anteriormente.</p>
     89 
     90 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
     91 
     92 <h2 id="into-your-app">Navegacin dentro de la aplicacin a travs de los widgets y las notificaciones de la pantalla de inicio</h2>
     93 
     94 <p>Podrs utilizar los widgets y las notificaciones de la pantalla de inicio para ayudar a los usuarios a navegar directamente hacia las pantallas
     95 que se encuentran en posiciones ms profundas dentro de la jerarqua de tu aplicacin. Por ejemplo, tanto el widget de la bandeja de entrada de Gmail como las notificaciones de los mensajes nuevos
     96  pueden omitir la pantalla Bandeja de entrada y llevar al usuario directamente hacia una vista de conversacin.</p>
     97 
     98 <p>En ambos casos, el botn Up se debe utilizar de la siguiente manera:</p>
     99 
    100 <ul>
    101 <li><em>Si a la pantalla de destino generalmente se llega desde una determinada pantalla dentro de su
    102 aplicacin</em>, el botn Up debe permitir la navegacin hacia esa pantalla.</li>
    103 <li><em>De lo contrario, </em>el botn Up debe permitir la navegacin hacia la pantalla que est en el nivel superior ("Inicio") de tu aplicacin.</li>
    104 </ul>
    105 
    106 <p>En el caso del botn Back, la navegacin debe ser ms predecible. Para ello, coloca en la
    107 pila de retroceso de la tarea la ruta completa de la navegacin ascendente hacia la pantalla que se encuentra en el nivel superior de la aplicacin. De este modo, los usuarios que
    108 no recuerdan cmo ingresaron a tu aplicacin podrn navegar hacia la pantalla del nivel superior de la aplicacin antes de
    109 salir.</p>
    110 
    111 <p>A modo de ejemplo, el widget de la pantalla Inicio de Gmail posee un botn para llevar al usuario directamente a la pantalla de
    112 redaccin. Mediante los botones Up o Back de la pantalla de redaccin el usuario debera poder dirigirse hacia la Bandeja de entrada y, a partir de all, continuar hacia la pantalla Inicio
    113 por medio del botn Back.</p>
    114 
    115 <img src="{@docRoot}design/media/navigation_from_outside_back.png">
    116 
    117 <h4>Notificaciones indirectas</h4>
    118 
    119 <p>Cuando tu aplicacin necesita presentar informacin sobre mltiples eventos de forma simultnea, puede utilizar una
    120 sola notificacin que dirija al usuario a una pantalla intersticial. En esta pantalla, se resumen dichos
    121 eventos y se proporcionan rutas para que el usuario navegue ms profundamente por la aplicacin. Las notificaciones de este estilo se
    122 denominan <em>notificaciones indirectas</em>.</p>
    123 
    124 <p>A diferencia de las notificaciones estndar (directas), si se presiona Back desde una pantalla intersticial de una
    125 notificacin indirecta, el usuario ser dirigido hacia el punto en el que se desencaden la notificacin. No se incluyen
    126 pantallas adicionales en la pila de retroceso. Una vez que el usuario se dirige hacia la aplicacin desde la
    127 pantalla intersticial, los botones Up y Back se comportan del mismo modo que lo hacen en las notificaciones estndar, como se describi antes:
    128 navegan dentro de la aplicacin en lugar de regresar a la pantalla intersticial.</p>
    129 
    130 <p>Por ejemplo, supongamos que un usuario de Gmail recibe una notificacin indirecta del calendario. Si se toca
    131 esta notificacin, se abrir la pantalla intersticial, en la que se mostrarn recordatorios de varios
    132 eventos diferentes. Si se toca Back desde la pantalla intersticial, el usuario volver a Gmail. Si se toca un evento
    133 en particular, el usuario saldr de la pantalla intersticial e ingresar en la aplicacin Calendario, donde se mostrarn detalles del
    134 evento. En la pantalla de detalles del evento, es posible navegar con los botones Up y Back hacia la visomunmenteta superior del calendario.</p>
    135 
    136 <img src="{@docRoot}design/media/navigation_indirect_notification.png">
    137 
    138 <h4>Notificaciones emergentes</h4>
    139 
    140 <p><em>Las notificaciones emergentes</em> omiten el panel lateral de notificaciones y aparecen directamente 
    141 frente al usuario. Estas casi nunca se utilizan, y se <strong>deben reservar para ocasiones en las que es necesario proporcionar una
    142 respuesta oportuna y es necesario realizar una interrupcin en el contexto del usuario</strong>. Por ejemplo,
    143 en Talk se utiliza este estilo para alertar al usuario sobre una invitacin de un amigo para participar en una videocharla, ya que esta
    144 invitacin caducar automticamente luego de algunos segundos.</p>
    145 
    146 <p>En trminos de comportamiento de la navegacin, las notificaciones emergentes siguen, en gran medida, el comportamiento de la pantalla intersticial
    147 de una notificacin indirecta. El botn Back le permite al usuario descartar la notificacin emergente. Si el usuario navega
    148 desde la ventana emergente hacia la aplicacin que genera las notificaciones, los botones Up y Back seguirn las reglas para las notificaciones estndar
    149 mientras se navega por la aplicacin.</p>
    150 
    151 <img src="{@docRoot}design/media/navigation_popup_notification.png">
    152 
    153 <h2 id="between-apps">Navegacin entre aplicaciones</h2>
    154 
    155 <p>Una de las principales ventajas del sistema Android es la capacidad de las aplicaciones de activarse
    156 mutuamente, por lo que el usuario puede navegar directamente desde una aplicacin hacia otra. Por ejemplo, una
    157 aplicacin que debe tomar una fotografa puede area appactivar la aplicacin de la cmara, la cual mostrar la fotografa
    158 en la aplicacin que la activ. Esto representa una gran ventaja tanto para el desarrollador, quien puede aprovechar fcilmente el
    159 cdigo de otras aplicaciones, como para el usuario, quien disfruta de una experiencia coherente para acciones
    160 que se realizan comnmente.</p>
    161 
    162 <p>Para comprender la navegacin entre aplicaciones, es importante que se entienda el comportamiento del framework de Android,
    163 que se explica a continuacin.</p>
    164 
    165 <h4>Actividades, tareas e intentos</h4>
    166 
    167 <p>En Android, una <strong>actividad</strong> es un componente de la aplicacin que define una pantalla de
    168 informacin y todas las acciones relacionadas que el usuario puede llevar a cabo. Tu aplicacin es un conjunto de
    169 actividades formado por las actividades que creas y aquellas que reutilizas de otras aplicaciones.</p>
    170 
    171 <p>Una <strong>tarea</strong> es la secuencia de actividades que un usuario realiza para lograr un objetivo. En
    172 una sola tarea, se pueden utilizar actividades de una sola aplicacin o se pueden utilizar actividades de varias
    173 aplicaciones diferentes.</p>
    174 
    175 <p>Un <strong>intento</strong> es un mecanismo mediante el cual una aplicacin indica que necesita la ayuda de
    176 otra aplicacin para realizar una accin. Las actividades de una aplicacin pueden indicar los intentos
    177 a los que pueden dar respuesta. En el caso de los intentos comunes, como "Compartir", es posible que el usuario tenga instaladas varias aplicaciones
    178 que pueden cumplir con esta solicitud.</p>
    179 
    180 <h4>Ejemplo: navegacin entre aplicaciones para respaldar el uso compartido</h4>
    181 
    182 <p>Para comprender cmo las actividades, las tareas y los intentos (intents) funcionan en conjunto, considera cmo una aplicacin les permite a los usuarios
    183 compartir contenido a travs de otra aplicacin. Por ejemplo, si se ejecuta la aplicacin Play Store desde la pantalla de inicio, se iniciar
    184 una nueva tarea A (consulta la imagen a continuacin). Despus de navegar por Play Store y de tocar un libro promocionado
    185 para ver su informacin detallada, el usuario permanece en la misma tarea y la extiende al agregar actividades. Si se desencadena la accin
    186 Compartir, se le mostrar al usuario un cuadro de dilogo con una lista de todas las actividades (provenientes de diferentes aplicaciones)
    187 que se registraron para concretar el intento de compartir.</p>
    188 
    189 <img src="{@docRoot}design/media/navigation_between_apps_inward.png">
    190 
    191 <p>Si el usuario decide compartir el contenido a travs de Gmail, la actividad de redaccin de Gmail se agrega como una continuacin de la
    192 tarea A; no se crea una tarea nueva. Si Gmail estaba ejecutando su propia tarea en segundo plano, esta
    193 no debera verse afectada.</p>
    194 
    195 <p>Desde la actividad de redaccin, si se enva el mensaje o se toca el botn Back, se dirigir nuevamente al usuario hacia
    196 la actividad de detalles del libro. Si se sigue tocando el botn Back, el usuario seguir navegando por Play
    197 Store y, finalmente, llegar a la pantalla de inicio.</p>
    198 
    199 <img src="{@docRoot}design/media/navigation_between_apps_back.png">
    200 
    201 <p>Sin embargo, si el usuario toca el botn Up desde la actividad de redaccin, estar indicando su deseo de permanecer dentro de
    202 Gmail. Por consiguiente, aparecer la actividad de la lista de conversaciones de Gmail y se crear una nueva tarea B para esto. La ruta raz de las nuevas tareas siempre conduce
    203 a la pantalla Inicio, por lo que, si se toca el botn Back desde la lista de conversaciones, se regresar a dicha pantalla.</p>
    204 
    205 <img src="{@docRoot}design/media/navigation_between_apps_up.png">
    206 
    207 <p>La tarea A permanece en segundo plano, y el usuario podr regresar a ella despus (por ejemplo, a travs de la pantalla
    208 Recientes). Si Gmail ya estaba ejecutando su propia tarea en segundo plano, esta se reemplazar con la
    209 tarea B, y el contexto anterior se abandonar para darle preferencia al nuevo objetivo del usuario.</p>
    210 
    211 <p>Cuando tu aplicacin se registre para manipular los intentos de una actividad que se encuentra en un nivel profundo dentro de la jerarqua de la aplicacin,
    212 consulta <a href="#into-your-app">Navegacin dentro de la aplicacin a travs de los widgets y
    213 las notificaciones de la pantalla de inicio</a> para obtener informacin sobre cmo especificar la navegacin del botn Up.</p>
    214