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