7

Nella mia app sto utilizzando Navigation Drawer e funziona molto bene. Ma se il frammento da mostrare contiene molto TextView, ImageView e Layout, quando faccio clic sull'elemento, la vista è glitching. Migliorerei questo ritardo. L'effetto è lo stesso del mio Galaxy Nexus e del Nexus 4, quindi penso che il problema sia che ho 2 comandi nello stesso tempo.Il cassetto di navigazione è lento con vista complessa

//On item click - First comand (Close Drawer) 
    mDrawerList.setItemChecked(position, true); 
    setTitle(mStringTitles[position]); 
    mDrawerLayout.closeDrawer(mDrawerView); 

    // Second comand (Replace Fragment)   
    getFragmentManager() 
    .beginTransaction() 
    .replace(R.id.firts_view, new FragmentNew()) 
    .commit(); 

Quindi ho pensato di sostituire il frammento subito dopo la chiusura del menu .. qualche idea?

risposta

7

Come il documentation says:

Avoid performing expensive operations such as layout during animation as it can cause stuttering; 
try to perform expensive operations during the STATE_IDLE state. 

cosa si potrebbe fare, è avere un listener di eventi per il vostro cassetto, e fare l'operazione frammento nel callback onDrawerClosed (example here).

+0

Grazie, una bella soluzione. – mdikici

0

Ho riscontrato che se si caricano le viste nel frammento nel metodo onCreateView(), si rallenterà il caricamento del frammento. Prova a caricare le viste relative ai frammenti nel metodo onStart().