Применить каскадную анимацию RecyclerView Items в Android

Я хочу сделать следующую анимацию:

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

Например: я нажимаю на свой элемент, расположенный в позиции 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++;
    }

}

person Nega developer    schedule 26.01.2017    source источник


Ответы (2)


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

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

person Danail Alexiev    schedule 26.01.2017

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

mResults.remove(position);
adapter.notifyItemRemoved(position);
person Abdennacer Lachiheb    schedule 26.01.2017