我正在尝试使我的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的一个组时,首先显示所有没有动画的子项,然后立即对所有子项进行扩展动画,就像我想要的那样。
我需要它来展示动画。 任何帮助都会非常棒。
答案 0 :(得分:0)
简而言之,它极其困难,很多人都说不可能这样做。这是android ListView / ExpandableListView的少数缺点之一。如果您注意到,当您在ExpandableListView上调用expandGroup(int groupPosition)方法时,有一个方法具有第二个参数,一个是否为其设置动画的布尔值。这个第二个动画方法已经出现了自api 14级以来对我们这些想要在android 2.3.3及更低版本上设置动画子视图的人没什么帮助。
它显示子项然后为它们设置动画的原因是因为在Java中,每行都是一个接一个地运行。因此,您正在扩展组视图,然后下一行是动画线。这就是java的方式。但是要正确设置组视图的子动画,您必须覆盖ExpandableListView类本身中的方法。我不推荐它,因为它做了很多工作
我遇到的最佳解决方法是最初将子项的高度设置为0像素。这种方式当Android操作系统布局你的视图时,似乎它不存在。然后你动画你的孩子从0像素高度到你想要的高度。希望有所帮助!