Android, ¿Cómo configurar el oyente de animación para ver grupo?

Tengo una vista de imagen que actúa como menú. Cuando el usuario haga clic en él, un grupo de vistas (incluidas otras 5 imágenes) se deslizará de izquierda a derecha. Cuando el usuario haga clic en el menú nuevamente, vea las diapositivas del grupo de derecha a izquierda.

Puedo simular este comportamiento, pero después de desplazarme de derecha a izquierda, espero no ver el grupo de vista, pero el grupo de vista se ubicará en su lugar. Traté de usarLinearLayout.setVisibiliy(View.Invisible) Pero en ese momento no pude ver deslizar la animación de derecha a izquierda.

Este es mi código, cualquier sugerencia sería apreciada.

menu_open.xml

<layoutAnimation 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:delay="10%"
    android:animation="@anim/slide_out" />

slide_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate 
        android:fromXDelta="-100%p" 
        android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime" />

    <alpha 
        android:fromAlpha="0.0" 
        android:toAlpha="1.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

menu_close.xml

<layoutAnimation 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:delay="10%"
    android:animation="@anim/slide_in" />

slide_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate 
        android:fromXDelta="0%p" 
        android:toXDelta="-100%p"
        android:duration="@android:integer/config_mediumAnimTime" />

    <alpha 
        android:fromAlpha="1.0" 
        android:toAlpha="0.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/ivMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:contentDescription="@string/CD"
        android:src="@drawable/ic_menu_01" />

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/ivMenu" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/CD"
            android:src="@drawable/ic_menu_03" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/CD"
            android:src="@drawable/ic_menu_04" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/CD"
            android:src="@drawable/ic_menu_05" />

        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/CD"
            android:src="@drawable/ic_menu_06" />

        <ImageView
            android:id="@+id/imageView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/CD"
            android:src="@drawable/ic_menu_07" />
    </LinearLayout>

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    private ImageView ivMenu;
    private Animation animate;
    private LinearLayout groupLayout;
    private boolean menuState = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        groupLayout = (LinearLayout) findViewById(R.id.linearLayout);
        groupLayout.setVisibility(View.INVISIBLE);

        ivMenu = (ImageView) findViewById(R.id.ivMenu);
        animate = AnimationUtils.loadAnimation(this, R.anim.animate);
        ivMenu.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ivMenu.startAnimation(animate);
                runFadeOutAnimationOn(MainActivity.this, ivMenu);

                if(!menuState) {
                     groupLayout.setVisibility(View.VISIBLE);
                     runExpandMenuAnimation(groupLayout, MainActivity.this);
                } else {
                    runCollapseMenuAnimation(groupLayout, MainActivity.this);
//                   groupLayout.setVisibility(View.INVISIBLE);
                }

                menuState = !menuState;
                Log.i("Menu state", "" + menuState);
            }
        });
    }

    public static void runExpandMenuAnimation(ViewGroup panel, Context ctx) {
        LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(ctx, R.anim.menu_open);
        panel.setLayoutAnimation(controller);
    }

    public static void runCollapseMenuAnimation(ViewGroup panel, Context ctx) {
        LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(ctx, R.anim.menu_close);
        panel.setLayoutAnimation(controller);
  }

    public static Animation runFadeOutAnimationOn(Activity ctx, View target) {
          Animation animation = AnimationUtils.loadAnimation(ctx, android.R.anim.fade_out);
          target.startAnimation(animation);

          return animation;
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta