在折叠/展开时为可扩展列表视图的子元素生成animation

我试图在可扩展列表视图中animation我的子视图。 在展开组时,我希望子视图从上到下滑动,并在折叠组时从下到上滑动。 我已经看了几个方法(animation视图组或子视图),但没有一个看起来工作得很好,或者我做得不对。

我已经从BaseExpandableListAdapter扩展了一个类来创build我自己的自定义适配器。 我也有我在getChildView和getGroupView方法中膨胀的组/子对象的自定义(xml)视图。

我只想让当前的折叠/展开组animation它的孩子。 任何人都可以指向正确的方向吗? 如果你需要更多的信息或代码,请让我知道!

问候,伊沃

Solutions Collecting From Web of "在折叠/展开时为可扩展列表视图的子元素生成animation"

所以我所做的就是使用常规的listview,然后单击时为行视图添加animation。

我使用这种方法animation: Androidanimation下拉/向上视图正确

如果视图的高度被下降,这可能有点棘手,因为这个问题我必须在开始animation之前find并设置高度:

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; } 

该视图应在animation开始之前消失,然后在animation开始时显示。

编辑:我在这里做了一个完整的例子。

您可以将animation添加到bindChildView方法中的每个子视图。 为了只animation当前组的子节点 – 只需要捕获onExpand事件,读取子节点,将id保存在某个数组上,并保存在bindChildView上 – 只animation保存在该数组上的子节点。

另一个解决scheme是使用我写的Android-SlideExpandableListView库: https : //github.com/tjerkw/Android-SlideExpandableListView

它build立在乌迪尼克等人的观点之上。

更多关于它可以阅读这篇博客文章: http : //tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/