我正在尝试在expandablelistview中为我的子视图设置动画。我希望子视图在展开组时从顶部向下滑动,并在折叠组时从底部滑动到顶部。我已经看过几种方法(动画视图组或子视图),但似乎没有一种方法可以很好地工作,或者我做得不对。
我从BaseExpandableListAdapter扩展了一个类来创建我自己的自定义适配器。我还有我在getChildView和getGroupView方法中膨胀的组/子项的自定义(xml)视图。
我只希望当前折叠/展开的群组为其孩子制作动画。谁能指出我正确的方向?如果您需要更多信息或代码,请告诉我们!
此致 IVO
答案 0 :(得分:5)
所以我所做的就是使用常规列表视图,然后在点击时为行视图设置动画。
我将此方法用于动画:Android animate drop down/up view proper
如果要删除的视图的高度是wrap_content,可能有点棘手,对于这个问题,我必须在开始动画之前找到并设置高度:
public static void setHeightForWrapContent(Activity activity, View view) {
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels;
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(screenWidth, MeasureSpec.EXACTLY);
view.measure(widthMeasureSpec, heightMeasureSpec);
int height = view.getMeasuredHeight();
view.getLayoutParams().height = height;
}
视图应在动画开始前消失,然后在动画开始时显示。
编辑:我做了一个完整的例子here。
答案 1 :(得分:2)
您可以在bindChildView方法中为每个子视图添加动画。 为了仅为当前组的子项设置动画 - 只需捕获onExpand事件,读取它的子项,将id保存在某个数组上,然后保存在bindChildView上 - 仅为该数组上保存的子项设置动画。
答案 2 :(得分:2)
另一个解决方案是使用我写的Android-SlideExpandableListView库: https://github.com/tjerkw/Android-SlideExpandableListView
它建立在Udinic和其他人的想法之上。
有关它的更多信息,请参阅此博客文章: http://tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/