在2.2上动画化ExpandableListView子项

时间:2012-04-26 00:42:45

标签: android listview animation expandablelistview

我正在尝试使我的ExpandableListView的子项显示动画。 由于我使用的是Android 2.2 API,我无法使用 expandGroup(int groupPos,boolean animate)方法

我正在使用我从这里获得的动画:Android animate drop down/up view proper

我在我的ExpandableListView适配器的getChildView方法中将它设置为我的convertView,如下所示:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
        View convertView, ViewGroup parent) {

           ...

    ExpandCollapseAnimation animation = new ExpandCollapseAnimation(convertView, 500, 0);
    convertView.setAnimation(animation);
    return convertView;
}

当我单击ExpandableListView的一个组时,首先显示所有没有动画的子项,然后立即对所有子项进行扩展动画,就像我想要的那样。

我需要它来展示动画。 任何帮助都会非常棒。

1 个答案:

答案 0 :(得分:0)

简而言之,它极其困难,很多人都说不可能这样做。这是android ListView / ExpandableListView的少数缺点之一。如果您注意到,当您在ExpandableListView上调用expandGroup(int groupPosition)方法时,有一个方法具有第二个参数,一个是否为其设置动画的布尔值。这个第二个动画方法已经出现了自api 14级以来对我们这些想要在android 2.3.3及更低版本上设置动画子视图的人没什么帮助。

它显示子项然后为它们设置动画的原因是因为在Java中,每行都是一个接一个地运行。因此,您正在扩展组视图,然后下一行是动画线。这就是java的方式。但是要正确设置组视图的子动画,您必须覆盖ExpandableListView类本身中的方法。我不推荐它,因为它做了很多工作

我遇到的最佳解决方法是最初将子项的高度设置为0像素。这种方式当Android操作系统布局你的视图时,似乎它不存在。然后你动画你的孩子从0像素高度到你想要的高度。希望有所帮助!