如何设置ListView的扩展动画?

时间:2014-11-05 16:44:54

标签: android listview animation

我希望实现一个可以在Android中滑动打开或扩展ListView的动画。目前,我正在使用缩放动画(如下所示)

    Animation slideDown = new ScaleAnimation(1.0f, 1.0f, 0.0f, 1.0f);
    slideDown.setDuration(1000);

但这有两个原因无效:

1)我希望第一个项目淡入,然后是要下拉的列表。如果我执行淡入淡出的动画,整个列表会显示,然后跳回到顶部并缩小到完整大小

2)我并不真正想要扩展,我想通过动画底部来揭示ListView(如果有意义的话)。

有没有办法可以在底部边缘或类似的东西上进行TranslateAnimation?我查看了可绘制的Clip资源,但这似乎并不适合我的需求(我不确定如何将它应用于ListView)。我使用普通的ListView,而不是ExpandableListView,因为我只有一组项目。

2 个答案:

答案 0 :(得分:1)

所以我开始寻找不同的东西,事实证明,动画高度是我的解决方案。基本上我从列表中的虚拟对象开始(因此它至少有一行),然后我将它从该行的高度设置为完整列表的高度。下面是我正在调用的runnable的代码。

private Runnable slideDownList1 = new Runnable() {
    @Override
    public void run() {

        final ListView detail = (ListView)getView().findViewById(R.id.detail_menu_1);
            ValueAnimator va = ValueAnimator.ofInt(detail.getHeight(), detail.getHeight()*mItem.containedObjects.size());
            va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                public void onAnimationUpdate(ValueAnimator animation) {
                    Integer value = (Integer) animation.getAnimatedValue();
                    detail.getLayoutParams().height = value.intValue();
                    detail.requestLayout();
                }
            });
            va.setDuration(1000);
            va.start();
        }
};

XML只是一个基本的ListView,其id为detail_menu_1。

答案 1 :(得分:0)

新元素Recycler View包含动画。您可以将它与支持库一起使用

https://developer.android.com/training/material/lists-cards.html