当收缩/展开可扩展列表视图的子项时,如何对其进行动画处理

17
我想在可扩展列表视图中为子视图添加动画效果。当展开一个组时,我希望子视图从顶部向下滑动,当折叠一个组时,子视图从底部向上滑动。我已经尝试了几种方法(动画ViewGroup或子视图),但是似乎都不太好使,或者我做错了什么。
我扩展了BaseExpandableListAdapter类以创建自己的自定义适配器。我还为组/子项创建了自定义(XML)视图,并在getChildView和getGroupView方法中进行了填充。
我只想为当前折叠/展开的组添加子项动画。有没有人能指点一下我正确的方向?如果您需要更多信息或代码,请告诉我!
问候, Ivo

我也在寻找解决方案。请帮忙。 - anshul
你有任何可行的解决方案吗? - Alex Chengalan
3个回答

5

所以我所做的是使用常规的listview,然后在单击行视图时对其进行动画处理。

我使用这种方法进行动画处理: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;
}

动画开始之前应该隐藏视图,然后在动画开始时将其显示出来。
编辑:我在这里提供了一个完整的示例:链接

2

您可以在bindChildView方法中为每个子视图添加动画效果。 为了仅对当前组的子项进行动画处理 - 只需捕获onExpand事件,读取其子项,在某个数组中保存这些子项的ID,并在bindChildView中仅对保存在该数组中的子项进行动画处理。


3
您能具体说明一些吗?或者您有示例代码吗?谢谢。 - user430926
我来详细解释一下: 在bindChildView中,你可以访问到子视图的View对象。你可以使用startAnimation方法对该对象应用动画效果。你还可以为每个动画设置偏移量,使得动画效果逐渐展现。 - Udinic

2

希望您能填写答案并解释一下这些链接的末尾内容,单独提供链接的答案有时候会失效。谢谢。 - Kev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接