Cajón de navegación (Google+ frente a YouTube)
¿Alguien sabe cómo implementar un menú deslizante como algunas de las mejores aplicaciones de la actualidad?
Otras preguntas de Stack Overflow no han tenido respuestas sobre cómo hacer esto, por lo que estoy tratando de recopilar la mayor cantidad de información para ayudar a otros. Todas las aplicaciones que menciono a continuación hacen un gran trabajo al implementar el menú deslizante.
1. Google Plus (a partir del 7/7/12)
Solo puedes pasar de la primera pantalla a la segunda haciendo clic en el logotipo de G+ en la esquina superior izquierda. Observe que toda la pantalla se mueve desde su posición y es empujada hacia el lado derecho de la pantalla (incluida la barra de acciones). Para volver a la primera pantalla, puede deslizar el lado derecho nuevamente para enfocarlo o puede hacer clic en el ícono G+ nuevamente.
2. YouTube (a partir del 7/7/12)
Puede pasar de la primera pantalla a la segunda usando dos métodos. Haga clic en el logotipo de YouTube en la esquina superior izquierda o puede usar un gesto de deslizamiento para moverlo hacia la derecha. Esto ya es diferente de la aplicación G+. En segundo lugar, puedes ver que la barra de acciones permanece fija (a diferencia de G+). Por último, para recuperar la pantalla original funciona igual que G+.
Edición #3:
¡El patrón del cajón de navegación se describe oficialmente en la documentación de Android!
Consulte los siguientes enlaces:
- Los documentos de diseño se pueden encontrar aquí .
- Los documentos para desarrolladores se pueden encontrar aquí .
Edición #2:
Roman Nurik (un ingeniero de diseño de Android en Google) ha confirmado que el comportamiento recomendado es no mover la barra de acción al abrir el cajón (como la aplicación de YouTube). Vea esta publicación de Google+ .
Edición #1:
Respondí esta pregunta hace un tiempo, pero vuelvo para volver a enfatizar que Prixing tiene el mejor menú desplegable que existe... con diferencia . Es absolutamente hermoso, perfectamente fluido y avergüenza a Facebook, Google+ y YouTube. EverNote también es bastante bueno... pero aún no es tan perfecto como Prixing. Consulte esta serie de publicaciones sobre cómo se implementó el menú desplegable (¡nada menos que por el desarrollador principal de Prixing!).
Respuesta original:
Adam Powell y Richard Fulcher hablan sobre esto en 49:47 - 52:50 en la charla de Google I/O titulada "Navegación en Android".
Para resumir su respuesta, a la fecha de esta publicación, el menú de navegación deslizable no forma parte oficialmente del estándar de diseño de aplicaciones de Android. Como probablemente habrá descubierto, actualmente no hay soporte nativo para esta función, pero se habló de agregarlo a una próxima revisión del paquete de soporte.
Con respecto a las aplicaciones YouTube y G+, parece extraño que se comporten de manera diferente. Mi mejor suposición es que la razón por la que la aplicación de YouTube corrige la posición de la barra de acciones es,
Una de las opciones de navegación más importantes para los usuarios que utilizan la aplicación YouTube es la búsqueda, que se realiza en la
SearchView
barra de acciones. En este sentido, tendría sentido hacer que la barra de acciones sea estática, ya que permitiría al usuario tener siempre la opción de buscar nuevos vídeos.La aplicación G+ usa a
ViewPager
para mostrar su contenido, por lo que hacer que el menú desplegable sea específico para el contenido del diseño (es decir, todo lo que está debajo de la barra de acción) no tendría mucho sentido. Se supone que deslizar el dedo proporciona un medio para navegar entre páginas, no un medio de navegación global. Esta podría ser la razón por la que decidieron hacerlo de manera diferente en la aplicación Google+ que en la aplicación YouTube.En otra nota, consulte la aplicación Google Play para ver otra versión del "menú desplegable" (cuando esté en la página más a la izquierda, deslícese hacia la izquierda y aparecerá un menú desplegable de "media página").
Tienes razón en que este no es un comportamiento muy consistente, pero no parece que haya un 100% de consenso dentro del equipo de Android sobre cómo se debe implementar este comportamiento todavía. No me sorprendería que en el futuro las aplicaciones se actualicen para que la navegación en ambas aplicaciones sea idéntica (parecieron muy interesados en hacer que la navegación fuera consistente en todas las aplicaciones creadas por Google en la charla).
Recientemente bifurqué un proyecto actual de Github llamado "RibbonMenu" y lo edité para adaptarlo a mis necesidades:
https://github.com/jaredsburrows/RibbonMenu
Cuál es el propósito
- Facilidad de acceso: permita un fácil acceso a un menú que se desliza hacia adentro y hacia afuera
- Facilidad de implementación: actualice la misma pantalla usando una cantidad mínima de código
- Independencia: No requiere bibliotecas de soporte como ActionBarSherlock
- Personalización: Fácil de cambiar colores y menús
Qué hay de nuevo
- Se cambió la animación deslizante para que coincida con las aplicaciones de Facebook y Google+.
- Se agregó ActionBar estándar (puede elegir usar ActionBarSherlock)
- Elemento de menú usado para abrir el menú
- Se agregó la capacidad de actualizar ListView en la actividad principal.
- Se agregaron 2 ListViews al menú, similares a las aplicaciones de Facebook y Google+
- También se agregó un AutoCompleteTextView y un botón para mostrar ejemplos de implementación.
- Se agregó un método para permitir a los usuarios presionar el 'botón Atrás' para ocultar el menú cuando está abierto.
- ¡Permite a los usuarios interactuar con el fondo (ListView principal) y el menú al mismo tiempo, a diferencia de las aplicaciones de Facebook y Google+!
ActionBar con menú fuera
ActionBar con menú fuera y búsqueda seleccionada
Existe una excelente implementación NavigationDrawer
que sigue las pautas de diseño de materiales de Google (y es compatible hasta API 10): la biblioteca MaterialDrawer (enlace a GitHub) . Al momento de escribir este artículo, mayo de 2017, cuenta con soporte activo.
Está disponible en el repositorio de Maven Central . Configuración de dependencia de Gradle:
compile 'com.mikepenz:materialdrawer:5.9.1'
Configuración de dependencia de Maven:
<dependency>
<groupId>com.mikepenz</groupId>
<artifactId>materialdrawer</artifactId>
<version>5.9.1</version>
</dependency>
Sé que esta es una pregunta antigua, pero la respuesta más actualizada es utilizar la biblioteca de diseño de soporte de Android que le facilitará la vida.