Bien, estoy intentando hacer una animación de deslizamiento hacia abajo adecuada. La vista que se desliza hacia abajo debe empujar todas las vistas hacia abajo en un movimiento uniforme y, nuevamente, cuando se desliza, todas las vistas deben seguir en un movimiento suave.Vista ascendente/descendente de animaciones de Android adecuada
Lo que he tryed: En código:
LinearLayout lin = (LinearLayout)findViewById(R.id.user_list_container);
setLayoutAnimSlidedownfromtop(lin, this);
lin.addView(getLayoutInflater().inflate(R.layout.user_panel,null),0);
Y:
public static void setLayoutAnimSlidedownfromtop(ViewGroup panel, Context ctx) {
AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(100);
set.addAnimation(animation);
animation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f
);
animation.setDuration(500);
set.addAnimation(animation);
LayoutAnimationController controller =
new LayoutAnimationController(set, 0.25f);
panel.setLayoutAnimation(controller);
}
Mi user_panel.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="vertical" >
<ImageView
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/icon" />
</LinearLayout>
Arriba XML principal:
<LinearLayout
android:id="@+id/user_list_container"
android:layout_alignParentTop="true"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/container"
android:layout_below="@+id/user_list_container"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
El problema con el enfoque anterior es que cuando comienzo la animación primero se crea el espacio vacío para la vista y luego la vista se desliza hacia abajo. Me gustaría que bajara lentamente todas las otras vistas en lugar de hacerlo en un solo movimiento.
Creo que necesitas ver la clase 'LayoutTransition'. Proporciona mecanismos para animar la adición/eliminación de vistas hacia/desde el diseño. –