0

Я хочу сделать следующую анимацию:Применение каскадной анимации RecyclerView товаров в Android

Когда я нажимаю на пункте моего RecyclerView пунктов, прежде чем исчезнуть с каскадной анимацией.

Например: I Нажмите на мой предмет, расположенный в позиции 10, после чего предметы от 0 до 9 должны исчезнуть, применяя каскадную левую анимацию.

Как это сделать?

В этот момент я попытался применить так:

методы ViewHolder:

@Override 
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { 

    holder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      swipeAnimation(position); 
     } 
    }); 

    lstViewsHolder.add(holder.itemView); 

    setAnimation(holder.itemView, position); 



} 

private void swipeAnimation(int position){ 
    int init = 0; 

    while(init < position){ 

     lstViewsHolder.get(init).startAnimation(AnimationUtils.loadAnimation(context, R.anim.swipe_left)); 
     init++; 
    } 

} 

ответ

1

Правильный способ сделать это с помощью пользовательской ItemAnimator. Вы должны попытаться расширить либо SimpleItemAnimator, либо DefaultItemAnimator, чтобы применить свою анимацию.

ItemAnimator s отвечает на события данных от адаптера, поэтому вы должны включить логику в свой адаптер, который вызывает notifyItemRemoved() или notifyItemRangeRemoved(), чтобы активировать надлежащую анимацию.

0

Я думаю, вам нужно перебирать массив и каждый раз удалять этот элемент, а затем вызывать notifyItemRemoved, вы можете отложить каждую операцию, чтобы анимация выглядела гладко.

mResults.remove(position); 
adapter.notifyItemRemoved(position);