在Android ListView中展开/折叠动画

时间:2013-07-20 18:46:28

标签: android android-listview android-animation

我正在尝试使用动画展开/折叠我的列表视图,并且我有以下代码。 我想要的是一个列表视图,在屏幕的顶部,展开和折叠,但是当它崩溃时,我只想从列表视图中看到当前选择的项目(一个项目,一行)。

public static Animation expand(final View v, final boolean expand) {
        try {
            Method m = v.getClass().getDeclaredMethod("onMeasure", int.class,
                    int.class);
            m.setAccessible(true);
            m.invoke(v,
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
                    MeasureSpec.makeMeasureSpec(
                            ((View) v.getParent()).getMeasuredWidth(),
                            MeasureSpec.AT_MOST));
        } catch (Exception e) {
            e.printStackTrace();
        }
        final int initialHeight = v.getMeasuredHeight();
        if (expand) {
            v.getLayoutParams().height = 50;
        } else {
            v.getLayoutParams().height = initialHeight;
        }
        v.setVisibility(View.VISIBLE);
        Animation a = new Animation() {
            @Override
            protected void applyTransformation(float interpolatedTime,
                    Transformation t) {
                int newHeight = 50;
                if (expand) {
                    newHeight = (int) (initialHeight * interpolatedTime);
                } else {
                    newHeight = (int) (initialHeight * (1 - interpolatedTime));
                }
                v.getLayoutParams().height = newHeight;
                v.requestLayout();
                if (interpolatedTime == 1 && !expand)
                    v.setVisibility(View.GONE);
            }

            @Override
            public boolean willChangeBounds() {
                return true;
            }
        };
        a.setDuration(500);
        return a;
    }

问题在于,当我崩溃时,我希望列表视图的第一行可见,而不是完全隐藏的列表视图,但我找不到将要执行此操作的代码部分。 有什么帮助吗?

提前多多感谢。

0 个答案:

没有答案