layoutAnimation只运行一次

时间:2012-04-15 16:40:51

标签: android animation android-linearlayout expandablelistview

我有LinearLayout layoutAnimation属性,用于自定义ExpandableListView。像这样:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layoutAnimation="@drawable/list_layout_controller"
    android:orientation="vertical" >

单击列表时,将显示动画。但它只能运行一次,并且不会在下一次单击时为列表设置动画。为什么呢?

如果您需要更多说明,请告诉我。

谢谢

5 个答案:

答案 0 :(得分:9)

首先你要声明

Animation  listanimation = AnimationUtils.loadAnimation(mainActivity.this, R.anim.list_layout_controller);

并且每次clearAnimation首先。 在LinearLayout的陈词滥调

 linearLayout.clearAnimation();
 linearLayout.startAnimation(listanimation);

答案 1 :(得分:8)

布局动画在将视图添加到布局时运行。因此,您必须在每次展开/折叠时手动添加/删除视图才能使布局动画生效。

为此,您可以使用列表索引作为键来维护视图映射。 每次点击时,只需从地图中选择相应的项目并添加到您的布局中。动画将在该视图上运行,您的问题已修复。

您还可以尝试更改onClick()中观看次数的可见性。但不确定这一点。 试试让我知道。

希望有所帮助。

答案 2 :(得分:3)

致电

listView.scheduleLayoutAnimation();

列表中的所有更改

之前

答案 3 :(得分:1)

尝试在每个项目上重新启动动画:

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      view.getAnimation().start();
      //your custom logic
}
});

答案 4 :(得分:-1)