【问题标题】:Animating ExpandableListView childs on 2.2在 2.2 上动画 ExpandableListView 孩子
【发布时间】:2012-04-26 00:42:44
【问题描述】:

我正在尝试让我的 ExpandableListView 的子项显示动画。 由于我使用的是 Android 2.2 API,我无法使用 expandGroup(int groupPos, boolean animate) 方法

我正在使用从这里获得的动画:Android animate drop down/up view proper

我在我的 ExpandableListView 适配器的 getChildView 方法中将它设置为我的 convertView,如下所示:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
        View convertView, ViewGroup parent) {

           ...

    ExpandCollapseAnimation animation = new ExpandCollapseAnimation(convertView, 500, 0);
    convertView.setAnimation(animation);
    return convertView;
}

当我单击 ExpandableListView 的 Group 时,首先它会显示所有没有动画的子项,然后立即对所有子项执行我想要的展开动画。

我需要它来显示动画。 任何帮助都会非常有用。

【问题讨论】:

    标签: android listview animation expandablelistview


    【解决方案1】:

    简而言之,它非常困难,很多人说它不可能做到这一点。这是android ListView/ExpandableListView 的少数缺点之一。如果您注意到,当您在 ExpandableListView 上调用 expandGroup(int groupPosition) 方法时,有一个方法具有第二个参数,即是否为它设置动画的布尔值。这第二种动画方法自 api 级别 14 以来就已经存在,这对我们这些想要在 android 2.3.3 及更低版本上为子视图设置动画的人没有多大帮助。

    它显示子元素并为其设置动画的原因是因为在 Java 中,每一行都是逐行运行的。因此,您正在扩展组视图,然后下一行是动画行。 java就是这样。但是要正确地为组视图的子视图设置动画,您必须覆盖 ExpandableListView 类本身中的一个方法。我不推荐它,因为它有很多工作

    我遇到的最佳解决方法是最初将孩子的高度设置为 0 像素。这样,当 android 操作系统展示您的视图时,它似乎不存在。然后你动画你的孩子从 0 像素高度到你想要的高度。希望对您有所帮助!

    【讨论】:

    • 对不起,Java 与它无关。而“逐行执行”的说法是计算机体系结构的一种非常简单的观点。
    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多