2016-04-28 82 views
1

我有一個可擴展的區域RecyclerView單擊某個特定項目會在其下添加一些項目。如何在Recycler視圖中爲視圖添加動畫

部分標題行有一個向下箭頭,然後我將其更改爲向上箭頭(如果展開)。默認的動畫會淡化整個部分的標題行,這是我想的。

如何選擇在單擊該行時將箭頭設置爲180度的動畫效果,而不僅僅是將圖像源更改爲不同的圖標。 更合適的問題是:其中我更新適配器內的這個視圖?哪種方法?當我嘗試使用ObjectAnimators in onCreateView()onBindViewHolder()時,它並不總是有效。

有沒有更好的方法/解決方案?

回答

0

使用

animateListItem(view, prevPosition < position); 

OR

setLayoutAnimation 

嘗試的適配器的getView OR onBindViewHolder方法:

public static void setLayoutAnimation(Activity activity, ListView listView, Integer anim, int duration) { 
    anim = (anim == null || anim == 0) ? R.anim.abc_slide_in_bottom : anim; 
    Animation animation = AnimationUtils.loadAnimation(activity, anim); 

    duration = duration <= 0 ? 500 : duration; 
    animation.setDuration(duration); 
    LayoutAnimationController controller = new LayoutAnimationController(animation, 1.0f); 
    listView.setLayoutAnimation(controller); 
} 

public static Animation slideFromTop, slideFromBottom; 

public static void initAnim(Activity activity) 
{ 
    slideFromTop = AnimationUtils.loadAnimation(activity, R.anim.abc_slide_in_top); 
    slideFromTop.setDuration(500); 

    slideFromBottom = AnimationUtils.loadAnimation(activity, R.anim.abc_slide_in_bottom); 
    slideFromBottom.setDuration(500); 
} 

public static void animateListItem(Activity activity, View view, boolean slideInBottom) { 
    try { 

    if (slideInBottom) 
    { 
     view.startAnimation(slideFromBottom); 
    } 
    else 
    { 
     view.startAnimation(slideFromTop); 
    } 

    } catch (Throwable t) { 
    t.printStackTrace(); 
    } 
}