Cómo crear un cajón de navegación suave

Estoy utilizando este ejemplo para el cajón de navegación. Al chascar encendido del artículo de la lista izquierda del cajón demuestra algunas imágenes pero el cajón se cierra no suavemente.

¿Qué debo hacer aquí para cerrar con facilidad el diseño del cajón izquierdo después de hacer clic en el elemento de listview.

No estoy seguro de que esta es la mejor ruta, pero la forma en que resolvió esto fue crear un Runnable pendiente que se ejecuta en onDrawerClosed . P.ej:

 private void selectItem(final int position) { mPendingRunnable = new Runnable() { @Override public void run() { // update the main content by replacing fragments Fragment fragment = new PlanetFragment(); Bundle args = new Bundle(); args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position); fragment.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); } }); // update selected item and title, then close the drawer mDrawerList.setItemChecked(position, true); setTitle(mPlanetTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } @Override public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); invalidateOptionsMenu(); // If mPendingRunnable is not null, then add to the message queue if (mPendingRunnable != null) { mHandler.post(mPendingRunnable); mPendingRunnable = null; } } 

Funciona perfecto

 private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { mDrawerLayout.closeDrawer(mDrawerList); mDrawerLayout.postDelayed(new Runnable() { @Override public void run() { selectItem(position); } }, 300); } } 

No utilizo hilos, porque necesito actualizar la interfaz de usuario después de cerrar el menú de navegación.

El siguiente código funciona para mí.

Estoy utilizando fragmento como miembro variable de clase para actualizar ui

La función setFragment () utiliza para asignar la variable fragmento a fragmento

En evento onDrawerClosed (), actualizo ui.

 mDrawerList.setOnItemClickListener(new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { setFragment(position); } }); // for getting fragment protected void setFragment(int p) { fragment = null; switch (position) { case 1: fragment = new DashboardFragment(); break; } if (fragment != null) { mDrawerList.setItemChecked(position, true); mDrawerList.setSelection(p); mDrawerLayout.closeDrawer(mDrawerList); } } // on close draw , fragment is loaded on screen public void onDrawerClosed(View view) { getSupportActionBar().setTitle(mTitle); invalidateOptionsMenu(); FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit(); } 

Simplemente publicar el archivo drawerLayout.closeDrawer () en la cola de mensajes utilizando el controlador, con un retardo mínimo resuelto mi problema. Handler.postDelayed () es la clave aquí.

  public void selectItem(int position) { switch (position) { case 0: DashboardFragment dashboardFragment = new DashboardFragment(); Bundle args = new Bundle(); args.putInt(dashboardFragment.ARG_SCREEN_NUMBER, position); dashboardFragment.setArguments(args); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // Replace whatever is in the fragment_container view with this fragment, // and add the transaction to the back stack so the user can navigate back transaction.replace(R.id.fragmentLayout, dashboardFragment, TAG_DASHBOARD); transaction.addToBackStack(null); // Commit the transaction transaction.commit(); getSupportFragmentManager().executePendingTransactions(); break; default: break; } // Highlight the selected item, update the title, and close the drawer drawerList.setItemChecked(position, true); setTitle(mScreenTitles[position]); mPendingRunnable = new Runnable() { @Override public void run() { drawerLayout.closeDrawer(GravityCompat.START); } }; mHandler.postDelayed(mPendingRunnable,50); } 
  • Cómo cerrar el cajón de navegación cuando se pulsa un elemento desde el mismo?
  • Elemento seleccionado en el cajón de navegación
  • Retardo de cajón de navegación en Android
  • Android - ¿Es posible cajón de navegación desde el lado derecho?
  • ActionBarDrawerToggle no está configurando el Indicador de cajón
  • ¿Cómo configurar el margen derecho del cajón de navegación?
  • Navegación Ver Texto Multilínea
  • Cómo resolver tipos inconvertibles no puede lanzar "Android.support.v4.app.fragment" a "nombre de paquete"
  • Icono de Android ic_drawer.png en color blanco?
  • Detección del estado de la aplicación de currículum de diferentes android estado de navegación
  • Cómo mostrar / ocultar el cajón de navegación mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.