I'm trying to animate my child views in an expandablelistview. I would like the child view to slide down from top to bottom when expanding a group and sliding from bottom to top when collapsing a group. I've looked at several methods (animating the viewgroup or the child views) but none seem to work very well or I'm not doing it right.
I've extended a class from BaseExpandableListAdapter to create my own custom adapter. I also have custom (xml) views for the groups/childs which I inflate in the getChildView and getGroupView methods.
I would only like the current collapsed/expanded group to animate it's child. Can anyone point me in the r开发者_StackOverflow社区ight direction? If you need more information or code please let me know!
Regards, Ivo
So what I've done is to use a regular listview and then animate the row views when clicked.
I use this methode for animation: Android animate drop down/up view proper
It can be a bit tricky if the height for the view to be dropped down is wrap_content, for this problem I had to find and set the height before I start the animation:
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;
}
The view should be gone before the animation start and then made visible when animation starts.
Edit: I made a complete example here.
You can add animation to each child view in the bindChildView method. In order to animate only the current group's child - just catch the onExpand event, read it's childs, save the ids on some array, and on the bindChildView - animate only the childs saved on that array.
Another solution is to use the Android-SlideExpandableListView library I wrote: https://github.com/tjerkw/Android-SlideExpandableListView
It builds upon ideas from Udinic and others.
More about it can be read in this blog post: http://tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/
精彩评论