2012-07-04 15 views
5

Desidero avere un menu simile a Facebook nella mia applicazione. Ci sono molti thread su questo e tutti suggeriscono di usare una libreria che in realtà prende solo uno screenshot dello schermo e fa scorrere l'immagine verso destra in modo da mostrare il menu sul lato sinistro e far scorrere l'immagine con una certa transizione. Ma in quel caso, il layout a destra non è selezionabile poiché è un'immagine.Menu slideout di Facebook lide (Non usare quella libreria)

Ma ho qualche altro modo di farlo in cui ho un layout radice che già ha layout dei menu e contenuti layout. Ma il layout di root è impostato su un margine negativo verso sinistra, quindi non è visibile. Come questo-

Content when menu is not pressed

Quando l'utente preme il pulsante del menu, il layout del menu è scivolato al margine sinistro destra e la radice del layout è impostato a 0. Così ora quello che vediamo è questo-

Content when menu is pressed and menu layout is shown

Ora, Il vero problema comincia qui

voglio far scorrere entrambi i layout con alcune animazioni. Così, quando animo il layout di menu & Layout Contenuto, l'animazione per entrambi i layout non è alla stessa velocità anche se sto applicando la stessa animazione ad esso. Così ho provato a Shift ROOT LAYOUT solo verso destra/sinistra impostandone il margine. Ma così facendo non viene mostrato nulla sullo schermo. Dove sto andando male. Il modo in cui ho impostato il margine è mostrato qui-

int width = leftLayout.getWidth(); 
isLayoutShown = !isLayoutShown; 
if(isLayoutShown){ 
    rootLayoutParams.setMargins(0, 0, 0, 0); 
    rootLayout.setLayoutParams(rootLayoutParams);  
}else{ 
    rootLayoutParams.setMargins(-width, 0, 0, 0); 
    rootLayout.setLayoutParams(rootLayoutParams); 
} 
+0

Hai avuto fortuna con questo? – EGHDK

+0

Sì, il problema è risolto in qualche modo. Si prega di controllare la risposta qui sotto. – Rajkiran

+0

Puoi dare un'occhiata alle risposte a questa domanda: http://stackoverflow.com/q/17884277/1491212 –

risposta

4

Finalmente in qualche modo potevo farlo. Ecco il codice usato quando si fa clic sul pulsante del menu in alto a sinistra:

@Override 
public void onClick(View v) { 
rootLayoutParams = new LayoutParams(rightLayout.getWidth(), 
    rightLayout.getHeight()); 

if (lhsMenu.getVisibility() == View.GONE) { 
    lhsMenu.setVisibility(View.VISIBLE); 
    Animation slideRight = setRightSlidingAnimation(); 
    rightLayout.setAnimation(slideRight); 
    lhsMenu.setAnimation(slideRight); 
} else { 
    Animation slideLeft = setLeftSlidingAnimation(); 
    rightLayout.setAnimation(slideLeft); 
    lhsMenu.setAnimation(slideLeft); 
    lhsMenu.setVisibility(View.GONE); 
    } 
} 

Aggiornamento: impostare anche il margine a destra ea sinistra (se necessario) del rightLayout in modo che il rightLayout non si restringono.

_rightLayoutParams.setMargins(width, 0, -width, 0);

dove width = 200 nel mio caso.

Problemi correlati