2014-11-05 107 views
1

我正在寻找实现一个动画,将滑动打开或扩展在Android的ListView。目前,我使用的是规模的动画(如下图所示)如何动画扩展ListView?

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

但这并不有2个原因的工作:

1)我想的第一个项目,以淡入,然后列表下拉。如果我在动画中淡入淡出,整个列表就会出现,然后跳回到顶部并缩小到全尺寸

2)我并不真正想要缩放,我只想显示ListView通过动画底部(如果这是有道理的)。

有没有一种方法可以在底部边距或类似的东西上做一个TranslateAnimation?我查看了可绘制的Clip资源,但这似乎并不符合我的需求(我不知道如何将它应用于ListView)。我正在使用正常的ListView,而不是ExpandableListView,因为我只有一组项目。

回答

0

于是我开始寻找不同的东西,事实证明,动画的高度是我的解决方案。本质上,我从列表中的虚拟对象开始(至少有一行),然后从该行的高度将其设置为完整列表的高度。下面是我现在调用的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。

0

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

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

+0

Recycler View看起来很酷,但我正在寻找动画扩展/打开整个视图,而不是视图内的项目。从最初我看到的情况来看,Recycler似乎并不像ListView那样为视图本身提供动画效果。 – Andrew 2014-11-05 18:18:54

+0

@Andrew你能澄清一下评论吗?例如,像时钟应用程序的闹钟部分,它展开以显示更多细节。这样的动画可能使用RecyclerView? – user2731584 2015-05-02 16:55:28