【问题标题】:animating the childs of an expandablelistview when collapsing/expanding折叠/展开时为可展开列表视图的子项设置动画
【发布时间】:2011-05-31 06:56:12
【问题描述】:

我正在尝试在可展开列表视图中为我的子视图设置动画。我希望子视图在展开组时从上到下滑动,在折叠组时从下到上滑动。我查看了几种方法(动画视图组或子视图),但似乎没有一个效果很好,或者我做得不对。

我从 BaseExpandableListAdapter 扩展了一个类来创建我自己的自定义适配器。我还为我在 getChildView 和 getGroupView 方法中扩展的组/子项提供了自定义 (xml) 视图。

我只希望当前折叠/展开的组为其子组设置动画。谁能指出我正确的方向?如果您需要更多信息或代码,请告诉我!

问候, 伊沃

【问题讨论】:

  • 您找到解决方案了吗?谢谢。
  • 我也在寻找解决方案。请帮忙
  • 您有任何可行的解决方案吗?

标签: android animation expandablelistview


【解决方案1】:

所以我所做的是使用常规列表视图,然后在单击时为行视图设置动画。

我用这个方法做动画: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

【讨论】:

    【解决方案2】:

    您可以在 bindChildView 方法中为每个子视图添加动画。 为了只为当前组的孩子制作动画 - 只需捕获 onExpand 事件,读取它的孩子,将 id 保存在某个数组和 bindChildView 上 - 只为保存在该数组中的孩子制作动画。

    【讨论】:

    • 你能再具体一点吗?或者你有任何示例代码吗?谢谢。
    • 我会详细说明:在 bindChildView 上,您可以访问孩子的 View 对象。您可以使用 startAnimation 在对象上应用动画。您可以为它们中的每一个设置偏移量,以使动画渐变。
    【解决方案3】:

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

    它建立在乌迪尼克和其他人的想法之上。

    可以在这篇博文中阅读有关它的更多信息: http://tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/

    【讨论】:

    • 如果您可以在回答中填写这些链接另一端的内容的解释,那就太好了。仅链接的答案有腐烂的趋势。谢谢。
    猜你喜欢
    • 2021-03-25
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多