使用嵌套布局的TranslateAnimation

时间:2012-04-25 20:48:21

标签: android animation

我正在设置“菜单展开”动画。展开选项是嵌套在垂直RelativeLayout中的2 LinearLayoutTranslateAnimation应用于周围的LinearLayout,并使选项从底部展开。

问题是只显示第一个嵌套RelativeLayout。第二个只是在没有动画的情况下变得可见。

下面是有问题的XML布局,应用动画的方法和调用。 非常感谢你的想法

<LinearLayout
    android:id="@+id/bmb_navigation_expanded"
    style="@style/bmb_RelativeLayout"
    android:layout_above="@id/bmb_bottom_bar"
    android:orientation="vertical"
    android:visibility="gone" >

    <RelativeLayout
        style="@style/bmb_RelativeLayout">

     option 1 stuff

    </RelativeLayout>

    <RelativeLayout            
        style="@style/bmb_RelativeLayout">

     option 2 stuff

    </RelativeLayout>

</LinearLayout>

将动画应用于LinearLayout的方法:

    public static void setSlideIn(ViewGroup panel, Context ctx) {

      AnimationSet set = new AnimationSet(false);

      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(200);
      set.addAnimation(animation);

      LayoutAnimationController controller = new LayoutAnimationController(set, 0);
      panel.setLayoutAnimation(controller);

    }

这就是我调用动画的方式:

        layout.setVisibility(View.VISIBLE);
        setSlideIn(layout, getActivity());

1 个答案:

答案 0 :(得分:1)

在这里回答我自己的问题。 LayoutAnimationController将动画分发给所有ViewGroup个孩子。如果我想将ViewGroup设置为单个实体,我必须执行以下操作:

panel.setAnimation(set);
set.start();