Android – ¿Cómo implementar un NavigationDrawer parcialmente visible en todo momento?

Me gustaría tener un NavigationDrawer en mi proyecto de Android que muestra el ListView parcialmente en todo momento, y los elementos también se pueden hacer clic, pero cuando el usuario arrastra el cajón completo ListView aparece.

Debajo de la imagen es lo que estoy tratando de lograr:

Introduzca aquí la descripción de la imagen

Primero uno es la "vista normal" donde usted puede ver los pequeños iconos. La segunda es cuando el usuario desliza el cajón de navegación para que se abra. El tercero es cuando de nuevo en la vista normal el usuario hace clic en A y C, para que los iconos cambien su color.

¿Alguna recomendación de cómo hacer esto?

Gracias por responder 🙂

Me encontré con esta biblioteca de código abierto, https://github.com/StevenRudenko/ActionsContentView . No lo he usado personalmente así que no puedo decir que encajará en su caso de uso exacto de tener un cajón a la derecha, pero tiene el cajón de la izquierda. Incluso entonces usted podría comenzar de allí y debe poder construir sobre él para caber su caso de uso.

Gracias por todas las respuestas. Esto es lo que hice para que funcione:

Utilicé fragmentos superpuestos y animación como sugerido. Mientras onCreate calculé manualmente el ancho del mapa (screensize – el tamaño del cajón mientras colapsado) de modo que no se estira extrañamente mientras se modifica el tamaño del cajón. Puse el cajón dentro de un fragmento y el fragmento visible en todo momento. Después de eso implementé OnGestureListener e hice un GestureDetector a mi actividad, y empecé a escuchar los eventos de toque del Gaveta:

drawer.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View view, MotionEvent e) { gestureDetector.onTouchEvent(e); return false; } }); 

Y luego onFling-método

 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if(velocityX < -250) { //animation for increasing the list width from 80 to 240 } else if (velocityY > 250 ) { //animation for decreasing the list width from 240 to 80 } return true; } 

Recomendaría que utilice dos fragmentos superpuestos para este escenario. Puedes consultar http://developer.android.com/guide/practices/tablets-and-handsets.html y http://developer.android.com/guide/components/fragments.html para las guías.

Si tiene alguna pregunta más específica, háganmelo saber.

  • ¿Por qué CursorAdapter es diferente de BaseAdapter?
  • Cómo utilizar la funcionalidad de búsqueda en la vista de lista personalizada en Android
  • Cómo saber desde el adaptador si el elemento de ListView es visible o no?
  • Android: ¿Qué hacer si el rendimiento de ListView sigue siendo insuficiente?
  • ListView muestra sólo un elemento
  • ¿Cómo actualizar ListView dinámicamente?
  • OnItemClickListener no funciona correctamente cuando el adaptador contiene un botón con onClickListener
  • Cómo utilizar DatePickerDialog en BaseAdapter
  • Cómo implementar 2 tipos diferentes de seperators (es decir, encabezados) en una clase de adaptador ListView
  • NotifyDataSetChange no funciona desde un adaptador personalizado
  • Usando Butter Knife en Custom BaseAdapter SubClass Resultados en el error "Unable to inject views"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.