2012-07-04 9 views
5

Quiero tener facebook como menú en mi aplicación. Hay muchos hilos en esto y todos ellos sugieren usar una biblioteca que realmente solo tome una captura de pantalla de la pantalla y deslice esa imagen hacia la derecha para mostrar el menú en el lado izquierdo y deslice la imagen con cierta transición. Pero en ese caso, no se puede hacer clic en el diseño de la derecha, ya que es una imagen.Facebook slideout menú (No usa esa biblioteca)

pero tengo otra manera de hacerlo, en el que tengo un diseño raíz que ya tiene Diseño de menú y Diseño de Contenido. Pero el diseño de la raíz se establece un margen negativo hacia la izquierda, por lo que no es visible. Así-

Content when menu is not pressed

Cuando el usuario presiona el botón de menú, el diseño del menú se desliza al margen izquierdo al derecho y la raíz de la disposición se establece en 0. Así que ahora lo que vemos es esto-

Content when menu is pressed and menu layout is shown

Ahora, El problema real comienza aquí

Quiero deslizar tanto los diseños con un poco de animación. Entonces, cuando yo animo el diseño del menú & Content Layout, la animación para ambos diseños no es a la misma velocidad, incluso si le estoy aplicando la misma animación. Así que traté de Shift ROOT LAYOUT solo hacia la derecha/izquierda estableciendo un margen para ello. Pero al hacerlo, no se muestra nada en la pantalla. ¿Dónde estoy equivocado? La forma en que establezco el margen se muestra aquí-

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

¿Has tenido algo de suerte con esto? – EGHDK

+0

Sí, el problema se resuelve de alguna manera. Por favor revisa la respuesta a continuación. – Rajkiran

+0

Es posible que desee ver las respuestas a esta pregunta: http://stackoverflow.com/q/17884277/1491212 –

Respuesta

4

Finalmente de alguna manera pude hacerlo. Aquí está el código utilizado cuando hago clic en el botón de menú en la esquina superior izquierda:

@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); 
    } 
} 

Actualización: también establecer el margen a la izquierda y la derecha (si es necesario) de rightLayout para que el rightLayout no se encogerá.

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

donde width = 200 en mi caso.

Cuestiones relacionadas