2014-11-05 104 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