2017-01-24 154 views
0

我在某些应用程序中看到了一个常见的recyclerview动画。当recyclerview首次填充时,其项目从底部滑入,同时也渐渐消失。如何实现这一目标?Recyclerview初始动画

+0

试试这个:https://github.com/wasabeef/recyclerview-animators –

+0

检查:https://antonioleiva.com/layout-animations-on-recyclerview/ – cuoka

回答

1

setItemAnimator()用于项的更改的/新的插入/缺失。如果您在物品上使用setAdapter(),它将不会在第一时间起作用。

试试这个回收站视图转接器内:

int lastPosition = -1; 
@Override 
public void onViewAttachedToWindow(final ViewHolder holder) { 
      super.onViewAttachedToWindow(holder); 
      final long delayTime = 200; 
      holder.card.setVisibility(View.INVISIBLE); 

      if (holder.getPosition() > lastPosition) { 
       holder.card.getHandler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         holder.card.setVisibility(View.VISIBLE); 
         ObjectAnimator alpha = ObjectAnimator.ofFloat(holder.card, "alpha", 0f, 1f); 
         ObjectAnimator scaleY = ObjectAnimator.ofFloat(holder.card, "scaleY", 0f, 1f); 
         ObjectAnimator scaleX = ObjectAnimator.ofFloat(holder.card, "scaleX", 0f, 1f); 
         AnimatorSet animSet = new AnimatorSet(); 
         animSet.play(alpha).with(scaleY).with(scaleX); 
         animSet.setInterpolator(new OvershootInterpolator()); 
         animSet.setDuration(400); 
         animSet.start(); 

        } 
       }, delayTime); 

       lastPosition = holder.getPosition(); 
      } else { 
       holder.card.setVisibility(View.VISIBLE); 
      } 
     } 

可以更改AnimatorSet和插补器为您的需要。

像:

PropertyValuesHolder translateX = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, 0, 0); 
        PropertyValuesHolder translateY = PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, 100, 0); 
        ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(holder.itemView, translateX, translateY); 
        AnimatorSet animSet = new AnimatorSet(); 
        animSet.play(animator); 
        animSet.setInterpolator(new AccelerateDecelerateInterpolator()); 
        animSet.setDuration(400); 
        animSet.start(); 
0