679 lines
30 KiB
Java
679 lines
30 KiB
Java
package androidx.recyclerview.widget;
|
|
|
|
import android.animation.Animator;
|
|
import android.animation.AnimatorListenerAdapter;
|
|
import android.animation.TimeInterpolator;
|
|
import android.animation.ValueAnimator;
|
|
import android.view.View;
|
|
import android.view.ViewPropertyAnimator;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.core.view.ViewCompat;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import c.d.b.a.a;
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
public class DefaultItemAnimator extends SimpleItemAnimator {
|
|
private static final boolean DEBUG = false;
|
|
private static TimeInterpolator sDefaultInterpolator;
|
|
public ArrayList<RecyclerView.ViewHolder> mAddAnimations = new ArrayList<>();
|
|
public ArrayList<ArrayList<RecyclerView.ViewHolder>> mAdditionsList = new ArrayList<>();
|
|
public ArrayList<RecyclerView.ViewHolder> mChangeAnimations = new ArrayList<>();
|
|
public ArrayList<ArrayList<ChangeInfo>> mChangesList = new ArrayList<>();
|
|
public ArrayList<RecyclerView.ViewHolder> mMoveAnimations = new ArrayList<>();
|
|
public ArrayList<ArrayList<MoveInfo>> mMovesList = new ArrayList<>();
|
|
private ArrayList<RecyclerView.ViewHolder> mPendingAdditions = new ArrayList<>();
|
|
private ArrayList<ChangeInfo> mPendingChanges = new ArrayList<>();
|
|
private ArrayList<MoveInfo> mPendingMoves = new ArrayList<>();
|
|
private ArrayList<RecyclerView.ViewHolder> mPendingRemovals = new ArrayList<>();
|
|
public ArrayList<RecyclerView.ViewHolder> mRemoveAnimations = new ArrayList<>();
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$1 reason: invalid class name */
|
|
public class AnonymousClass1 implements Runnable {
|
|
public final /* synthetic */ ArrayList val$moves;
|
|
|
|
public AnonymousClass1(ArrayList arrayList) {
|
|
this.val$moves = arrayList;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
Iterator it = this.val$moves.iterator();
|
|
while (it.hasNext()) {
|
|
MoveInfo moveInfo = (MoveInfo) it.next();
|
|
DefaultItemAnimator.this.animateMoveImpl(moveInfo.holder, moveInfo.fromX, moveInfo.fromY, moveInfo.toX, moveInfo.toY);
|
|
}
|
|
this.val$moves.clear();
|
|
DefaultItemAnimator.this.mMovesList.remove(this.val$moves);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$2 reason: invalid class name */
|
|
public class AnonymousClass2 implements Runnable {
|
|
public final /* synthetic */ ArrayList val$changes;
|
|
|
|
public AnonymousClass2(ArrayList arrayList) {
|
|
this.val$changes = arrayList;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
Iterator it = this.val$changes.iterator();
|
|
while (it.hasNext()) {
|
|
DefaultItemAnimator.this.animateChangeImpl((ChangeInfo) it.next());
|
|
}
|
|
this.val$changes.clear();
|
|
DefaultItemAnimator.this.mChangesList.remove(this.val$changes);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$3 reason: invalid class name */
|
|
public class AnonymousClass3 implements Runnable {
|
|
public final /* synthetic */ ArrayList val$additions;
|
|
|
|
public AnonymousClass3(ArrayList arrayList) {
|
|
this.val$additions = arrayList;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
Iterator it = this.val$additions.iterator();
|
|
while (it.hasNext()) {
|
|
DefaultItemAnimator.this.animateAddImpl((RecyclerView.ViewHolder) it.next());
|
|
}
|
|
this.val$additions.clear();
|
|
DefaultItemAnimator.this.mAdditionsList.remove(this.val$additions);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$4 reason: invalid class name */
|
|
public class AnonymousClass4 extends AnimatorListenerAdapter {
|
|
public final /* synthetic */ ViewPropertyAnimator val$animation;
|
|
public final /* synthetic */ RecyclerView.ViewHolder val$holder;
|
|
public final /* synthetic */ View val$view;
|
|
|
|
public AnonymousClass4(RecyclerView.ViewHolder viewHolder, ViewPropertyAnimator viewPropertyAnimator, View view) {
|
|
this.val$holder = viewHolder;
|
|
this.val$animation = viewPropertyAnimator;
|
|
this.val$view = view;
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
this.val$animation.setListener(null);
|
|
this.val$view.setAlpha(1.0f);
|
|
DefaultItemAnimator.this.dispatchRemoveFinished(this.val$holder);
|
|
DefaultItemAnimator.this.mRemoveAnimations.remove(this.val$holder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchRemoveStarting(this.val$holder);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$5 reason: invalid class name */
|
|
public class AnonymousClass5 extends AnimatorListenerAdapter {
|
|
public final /* synthetic */ ViewPropertyAnimator val$animation;
|
|
public final /* synthetic */ RecyclerView.ViewHolder val$holder;
|
|
public final /* synthetic */ View val$view;
|
|
|
|
public AnonymousClass5(RecyclerView.ViewHolder viewHolder, View view, ViewPropertyAnimator viewPropertyAnimator) {
|
|
this.val$holder = viewHolder;
|
|
this.val$view = view;
|
|
this.val$animation = viewPropertyAnimator;
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationCancel(Animator animator) {
|
|
this.val$view.setAlpha(1.0f);
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
this.val$animation.setListener(null);
|
|
DefaultItemAnimator.this.dispatchAddFinished(this.val$holder);
|
|
DefaultItemAnimator.this.mAddAnimations.remove(this.val$holder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchAddStarting(this.val$holder);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$6 reason: invalid class name */
|
|
public class AnonymousClass6 extends AnimatorListenerAdapter {
|
|
public final /* synthetic */ ViewPropertyAnimator val$animation;
|
|
public final /* synthetic */ int val$deltaX;
|
|
public final /* synthetic */ int val$deltaY;
|
|
public final /* synthetic */ RecyclerView.ViewHolder val$holder;
|
|
public final /* synthetic */ View val$view;
|
|
|
|
public AnonymousClass6(RecyclerView.ViewHolder viewHolder, int i, View view, int i2, ViewPropertyAnimator viewPropertyAnimator) {
|
|
this.val$holder = viewHolder;
|
|
this.val$deltaX = i;
|
|
this.val$view = view;
|
|
this.val$deltaY = i2;
|
|
this.val$animation = viewPropertyAnimator;
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationCancel(Animator animator) {
|
|
if (this.val$deltaX != 0) {
|
|
this.val$view.setTranslationX(0.0f);
|
|
}
|
|
if (this.val$deltaY != 0) {
|
|
this.val$view.setTranslationY(0.0f);
|
|
}
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
this.val$animation.setListener(null);
|
|
DefaultItemAnimator.this.dispatchMoveFinished(this.val$holder);
|
|
DefaultItemAnimator.this.mMoveAnimations.remove(this.val$holder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchMoveStarting(this.val$holder);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$7 reason: invalid class name */
|
|
public class AnonymousClass7 extends AnimatorListenerAdapter {
|
|
public final /* synthetic */ ChangeInfo val$changeInfo;
|
|
public final /* synthetic */ ViewPropertyAnimator val$oldViewAnim;
|
|
public final /* synthetic */ View val$view;
|
|
|
|
public AnonymousClass7(ChangeInfo changeInfo, ViewPropertyAnimator viewPropertyAnimator, View view) {
|
|
this.val$changeInfo = changeInfo;
|
|
this.val$oldViewAnim = viewPropertyAnimator;
|
|
this.val$view = view;
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
this.val$oldViewAnim.setListener(null);
|
|
this.val$view.setAlpha(1.0f);
|
|
this.val$view.setTranslationX(0.0f);
|
|
this.val$view.setTranslationY(0.0f);
|
|
DefaultItemAnimator.this.dispatchChangeFinished(this.val$changeInfo.oldHolder, true);
|
|
DefaultItemAnimator.this.mChangeAnimations.remove(this.val$changeInfo.oldHolder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchChangeStarting(this.val$changeInfo.oldHolder, true);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.recyclerview.widget.DefaultItemAnimator$8 reason: invalid class name */
|
|
public class AnonymousClass8 extends AnimatorListenerAdapter {
|
|
public final /* synthetic */ ChangeInfo val$changeInfo;
|
|
public final /* synthetic */ View val$newView;
|
|
public final /* synthetic */ ViewPropertyAnimator val$newViewAnimation;
|
|
|
|
public AnonymousClass8(ChangeInfo changeInfo, ViewPropertyAnimator viewPropertyAnimator, View view) {
|
|
this.val$changeInfo = changeInfo;
|
|
this.val$newViewAnimation = viewPropertyAnimator;
|
|
this.val$newView = view;
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
this.val$newViewAnimation.setListener(null);
|
|
this.val$newView.setAlpha(1.0f);
|
|
this.val$newView.setTranslationX(0.0f);
|
|
this.val$newView.setTranslationY(0.0f);
|
|
DefaultItemAnimator.this.dispatchChangeFinished(this.val$changeInfo.newHolder, false);
|
|
DefaultItemAnimator.this.mChangeAnimations.remove(this.val$changeInfo.newHolder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchChangeStarting(this.val$changeInfo.newHolder, false);
|
|
}
|
|
}
|
|
|
|
public static class ChangeInfo {
|
|
public int fromX;
|
|
public int fromY;
|
|
public RecyclerView.ViewHolder newHolder;
|
|
public RecyclerView.ViewHolder oldHolder;
|
|
public int toX;
|
|
public int toY;
|
|
|
|
private ChangeInfo(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2) {
|
|
this.oldHolder = viewHolder;
|
|
this.newHolder = viewHolder2;
|
|
}
|
|
|
|
public ChangeInfo(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2, int i, int i2, int i3, int i4) {
|
|
this(viewHolder, viewHolder2);
|
|
this.fromX = i;
|
|
this.fromY = i2;
|
|
this.toX = i3;
|
|
this.toY = i4;
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuilder K = a.K("ChangeInfo{oldHolder=");
|
|
K.append(this.oldHolder);
|
|
K.append(", newHolder=");
|
|
K.append(this.newHolder);
|
|
K.append(", fromX=");
|
|
K.append(this.fromX);
|
|
K.append(", fromY=");
|
|
K.append(this.fromY);
|
|
K.append(", toX=");
|
|
K.append(this.toX);
|
|
K.append(", toY=");
|
|
return a.v(K, this.toY, '}');
|
|
}
|
|
}
|
|
|
|
public static class MoveInfo {
|
|
public int fromX;
|
|
public int fromY;
|
|
public RecyclerView.ViewHolder holder;
|
|
public int toX;
|
|
public int toY;
|
|
|
|
public MoveInfo(RecyclerView.ViewHolder viewHolder, int i, int i2, int i3, int i4) {
|
|
this.holder = viewHolder;
|
|
this.fromX = i;
|
|
this.fromY = i2;
|
|
this.toX = i3;
|
|
this.toY = i4;
|
|
}
|
|
}
|
|
|
|
private void animateRemoveImpl(RecyclerView.ViewHolder viewHolder) {
|
|
View view = viewHolder.itemView;
|
|
ViewPropertyAnimator animate = view.animate();
|
|
this.mRemoveAnimations.add(viewHolder);
|
|
animate.setDuration(getRemoveDuration()).alpha(0.0f).setListener(new AnonymousClass4(viewHolder, animate, view)).start();
|
|
}
|
|
|
|
private void endChangeAnimation(List<ChangeInfo> list, RecyclerView.ViewHolder viewHolder) {
|
|
for (int size = list.size() - 1; size >= 0; size--) {
|
|
ChangeInfo changeInfo = list.get(size);
|
|
if (endChangeAnimationIfNecessary(changeInfo, viewHolder) && changeInfo.oldHolder == null && changeInfo.newHolder == null) {
|
|
list.remove(changeInfo);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void endChangeAnimationIfNecessary(ChangeInfo changeInfo) {
|
|
RecyclerView.ViewHolder viewHolder = changeInfo.oldHolder;
|
|
if (viewHolder != null) {
|
|
endChangeAnimationIfNecessary(changeInfo, viewHolder);
|
|
}
|
|
RecyclerView.ViewHolder viewHolder2 = changeInfo.newHolder;
|
|
if (viewHolder2 != null) {
|
|
endChangeAnimationIfNecessary(changeInfo, viewHolder2);
|
|
}
|
|
}
|
|
|
|
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, RecyclerView.ViewHolder viewHolder) {
|
|
boolean z2 = false;
|
|
if (changeInfo.newHolder == viewHolder) {
|
|
changeInfo.newHolder = null;
|
|
} else if (changeInfo.oldHolder != viewHolder) {
|
|
return false;
|
|
} else {
|
|
changeInfo.oldHolder = null;
|
|
z2 = true;
|
|
}
|
|
viewHolder.itemView.setAlpha(1.0f);
|
|
viewHolder.itemView.setTranslationX(0.0f);
|
|
viewHolder.itemView.setTranslationY(0.0f);
|
|
dispatchChangeFinished(viewHolder, z2);
|
|
return true;
|
|
}
|
|
|
|
private void resetAnimation(RecyclerView.ViewHolder viewHolder) {
|
|
if (sDefaultInterpolator == null) {
|
|
sDefaultInterpolator = new ValueAnimator().getInterpolator();
|
|
}
|
|
viewHolder.itemView.animate().setInterpolator(sDefaultInterpolator);
|
|
endAnimation(viewHolder);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.SimpleItemAnimator
|
|
public boolean animateAdd(RecyclerView.ViewHolder viewHolder) {
|
|
resetAnimation(viewHolder);
|
|
viewHolder.itemView.setAlpha(0.0f);
|
|
this.mPendingAdditions.add(viewHolder);
|
|
return true;
|
|
}
|
|
|
|
public void animateAddImpl(RecyclerView.ViewHolder viewHolder) {
|
|
View view = viewHolder.itemView;
|
|
ViewPropertyAnimator animate = view.animate();
|
|
this.mAddAnimations.add(viewHolder);
|
|
animate.alpha(1.0f).setDuration(getAddDuration()).setListener(new AnonymousClass5(viewHolder, view, animate)).start();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.SimpleItemAnimator
|
|
public boolean animateChange(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2, int i, int i2, int i3, int i4) {
|
|
if (viewHolder == viewHolder2) {
|
|
return animateMove(viewHolder, i, i2, i3, i4);
|
|
}
|
|
float translationX = viewHolder.itemView.getTranslationX();
|
|
float translationY = viewHolder.itemView.getTranslationY();
|
|
float alpha = viewHolder.itemView.getAlpha();
|
|
resetAnimation(viewHolder);
|
|
int i5 = (int) (((float) (i3 - i)) - translationX);
|
|
int i6 = (int) (((float) (i4 - i2)) - translationY);
|
|
viewHolder.itemView.setTranslationX(translationX);
|
|
viewHolder.itemView.setTranslationY(translationY);
|
|
viewHolder.itemView.setAlpha(alpha);
|
|
if (viewHolder2 != null) {
|
|
resetAnimation(viewHolder2);
|
|
viewHolder2.itemView.setTranslationX((float) (-i5));
|
|
viewHolder2.itemView.setTranslationY((float) (-i6));
|
|
viewHolder2.itemView.setAlpha(0.0f);
|
|
}
|
|
this.mPendingChanges.add(new ChangeInfo(viewHolder, viewHolder2, i, i2, i3, i4));
|
|
return true;
|
|
}
|
|
|
|
public void animateChangeImpl(ChangeInfo changeInfo) {
|
|
RecyclerView.ViewHolder viewHolder = changeInfo.oldHolder;
|
|
View view = null;
|
|
View view2 = viewHolder == null ? null : viewHolder.itemView;
|
|
RecyclerView.ViewHolder viewHolder2 = changeInfo.newHolder;
|
|
if (viewHolder2 != null) {
|
|
view = viewHolder2.itemView;
|
|
}
|
|
if (view2 != null) {
|
|
ViewPropertyAnimator duration = view2.animate().setDuration(getChangeDuration());
|
|
this.mChangeAnimations.add(changeInfo.oldHolder);
|
|
duration.translationX((float) (changeInfo.toX - changeInfo.fromX));
|
|
duration.translationY((float) (changeInfo.toY - changeInfo.fromY));
|
|
duration.alpha(0.0f).setListener(new AnonymousClass7(changeInfo, duration, view2)).start();
|
|
}
|
|
if (view != null) {
|
|
ViewPropertyAnimator animate = view.animate();
|
|
this.mChangeAnimations.add(changeInfo.newHolder);
|
|
animate.translationX(0.0f).translationY(0.0f).setDuration(getChangeDuration()).alpha(1.0f).setListener(new AnonymousClass8(changeInfo, animate, view)).start();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.SimpleItemAnimator
|
|
public boolean animateMove(RecyclerView.ViewHolder viewHolder, int i, int i2, int i3, int i4) {
|
|
View view = viewHolder.itemView;
|
|
int translationX = i + ((int) view.getTranslationX());
|
|
int translationY = i2 + ((int) viewHolder.itemView.getTranslationY());
|
|
resetAnimation(viewHolder);
|
|
int i5 = i3 - translationX;
|
|
int i6 = i4 - translationY;
|
|
if (i5 == 0 && i6 == 0) {
|
|
dispatchMoveFinished(viewHolder);
|
|
return false;
|
|
}
|
|
if (i5 != 0) {
|
|
view.setTranslationX((float) (-i5));
|
|
}
|
|
if (i6 != 0) {
|
|
view.setTranslationY((float) (-i6));
|
|
}
|
|
this.mPendingMoves.add(new MoveInfo(viewHolder, translationX, translationY, i3, i4));
|
|
return true;
|
|
}
|
|
|
|
public void animateMoveImpl(RecyclerView.ViewHolder viewHolder, int i, int i2, int i3, int i4) {
|
|
View view = viewHolder.itemView;
|
|
int i5 = i3 - i;
|
|
int i6 = i4 - i2;
|
|
if (i5 != 0) {
|
|
view.animate().translationX(0.0f);
|
|
}
|
|
if (i6 != 0) {
|
|
view.animate().translationY(0.0f);
|
|
}
|
|
ViewPropertyAnimator animate = view.animate();
|
|
this.mMoveAnimations.add(viewHolder);
|
|
animate.setDuration(getMoveDuration()).setListener(new AnonymousClass6(viewHolder, i5, view, i6, animate)).start();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.SimpleItemAnimator
|
|
public boolean animateRemove(RecyclerView.ViewHolder viewHolder) {
|
|
resetAnimation(viewHolder);
|
|
this.mPendingRemovals.add(viewHolder);
|
|
return true;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
|
|
public boolean canReuseUpdatedViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, @NonNull List<Object> list) {
|
|
return !list.isEmpty() || super.canReuseUpdatedViewHolder(viewHolder, list);
|
|
}
|
|
|
|
public void cancelAll(List<RecyclerView.ViewHolder> list) {
|
|
for (int size = list.size() - 1; size >= 0; size--) {
|
|
list.get(size).itemView.animate().cancel();
|
|
}
|
|
}
|
|
|
|
public void dispatchFinishedWhenDone() {
|
|
if (!isRunning()) {
|
|
dispatchAnimationsFinished();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
|
|
public void endAnimation(RecyclerView.ViewHolder viewHolder) {
|
|
View view = viewHolder.itemView;
|
|
view.animate().cancel();
|
|
int size = this.mPendingMoves.size();
|
|
while (true) {
|
|
size--;
|
|
if (size < 0) {
|
|
break;
|
|
} else if (this.mPendingMoves.get(size).holder == viewHolder) {
|
|
view.setTranslationY(0.0f);
|
|
view.setTranslationX(0.0f);
|
|
dispatchMoveFinished(viewHolder);
|
|
this.mPendingMoves.remove(size);
|
|
}
|
|
}
|
|
endChangeAnimation(this.mPendingChanges, viewHolder);
|
|
if (this.mPendingRemovals.remove(viewHolder)) {
|
|
view.setAlpha(1.0f);
|
|
dispatchRemoveFinished(viewHolder);
|
|
}
|
|
if (this.mPendingAdditions.remove(viewHolder)) {
|
|
view.setAlpha(1.0f);
|
|
dispatchAddFinished(viewHolder);
|
|
}
|
|
for (int size2 = this.mChangesList.size() - 1; size2 >= 0; size2--) {
|
|
ArrayList<ChangeInfo> arrayList = this.mChangesList.get(size2);
|
|
endChangeAnimation(arrayList, viewHolder);
|
|
if (arrayList.isEmpty()) {
|
|
this.mChangesList.remove(size2);
|
|
}
|
|
}
|
|
for (int size3 = this.mMovesList.size() - 1; size3 >= 0; size3--) {
|
|
ArrayList<MoveInfo> arrayList2 = this.mMovesList.get(size3);
|
|
int size4 = arrayList2.size() - 1;
|
|
while (true) {
|
|
if (size4 < 0) {
|
|
break;
|
|
} else if (arrayList2.get(size4).holder == viewHolder) {
|
|
view.setTranslationY(0.0f);
|
|
view.setTranslationX(0.0f);
|
|
dispatchMoveFinished(viewHolder);
|
|
arrayList2.remove(size4);
|
|
if (arrayList2.isEmpty()) {
|
|
this.mMovesList.remove(size3);
|
|
}
|
|
} else {
|
|
size4--;
|
|
}
|
|
}
|
|
}
|
|
for (int size5 = this.mAdditionsList.size() - 1; size5 >= 0; size5--) {
|
|
ArrayList<RecyclerView.ViewHolder> arrayList3 = this.mAdditionsList.get(size5);
|
|
if (arrayList3.remove(viewHolder)) {
|
|
view.setAlpha(1.0f);
|
|
dispatchAddFinished(viewHolder);
|
|
if (arrayList3.isEmpty()) {
|
|
this.mAdditionsList.remove(size5);
|
|
}
|
|
}
|
|
}
|
|
this.mRemoveAnimations.remove(viewHolder);
|
|
this.mAddAnimations.remove(viewHolder);
|
|
this.mChangeAnimations.remove(viewHolder);
|
|
this.mMoveAnimations.remove(viewHolder);
|
|
dispatchFinishedWhenDone();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
|
|
public void endAnimations() {
|
|
int size = this.mPendingMoves.size();
|
|
while (true) {
|
|
size--;
|
|
if (size < 0) {
|
|
break;
|
|
}
|
|
MoveInfo moveInfo = this.mPendingMoves.get(size);
|
|
View view = moveInfo.holder.itemView;
|
|
view.setTranslationY(0.0f);
|
|
view.setTranslationX(0.0f);
|
|
dispatchMoveFinished(moveInfo.holder);
|
|
this.mPendingMoves.remove(size);
|
|
}
|
|
for (int size2 = this.mPendingRemovals.size() - 1; size2 >= 0; size2--) {
|
|
dispatchRemoveFinished(this.mPendingRemovals.get(size2));
|
|
this.mPendingRemovals.remove(size2);
|
|
}
|
|
int size3 = this.mPendingAdditions.size();
|
|
while (true) {
|
|
size3--;
|
|
if (size3 < 0) {
|
|
break;
|
|
}
|
|
RecyclerView.ViewHolder viewHolder = this.mPendingAdditions.get(size3);
|
|
viewHolder.itemView.setAlpha(1.0f);
|
|
dispatchAddFinished(viewHolder);
|
|
this.mPendingAdditions.remove(size3);
|
|
}
|
|
for (int size4 = this.mPendingChanges.size() - 1; size4 >= 0; size4--) {
|
|
endChangeAnimationIfNecessary(this.mPendingChanges.get(size4));
|
|
}
|
|
this.mPendingChanges.clear();
|
|
if (isRunning()) {
|
|
for (int size5 = this.mMovesList.size() - 1; size5 >= 0; size5--) {
|
|
ArrayList<MoveInfo> arrayList = this.mMovesList.get(size5);
|
|
for (int size6 = arrayList.size() - 1; size6 >= 0; size6--) {
|
|
MoveInfo moveInfo2 = arrayList.get(size6);
|
|
View view2 = moveInfo2.holder.itemView;
|
|
view2.setTranslationY(0.0f);
|
|
view2.setTranslationX(0.0f);
|
|
dispatchMoveFinished(moveInfo2.holder);
|
|
arrayList.remove(size6);
|
|
if (arrayList.isEmpty()) {
|
|
this.mMovesList.remove(arrayList);
|
|
}
|
|
}
|
|
}
|
|
for (int size7 = this.mAdditionsList.size() - 1; size7 >= 0; size7--) {
|
|
ArrayList<RecyclerView.ViewHolder> arrayList2 = this.mAdditionsList.get(size7);
|
|
for (int size8 = arrayList2.size() - 1; size8 >= 0; size8--) {
|
|
RecyclerView.ViewHolder viewHolder2 = arrayList2.get(size8);
|
|
viewHolder2.itemView.setAlpha(1.0f);
|
|
dispatchAddFinished(viewHolder2);
|
|
arrayList2.remove(size8);
|
|
if (arrayList2.isEmpty()) {
|
|
this.mAdditionsList.remove(arrayList2);
|
|
}
|
|
}
|
|
}
|
|
for (int size9 = this.mChangesList.size() - 1; size9 >= 0; size9--) {
|
|
ArrayList<ChangeInfo> arrayList3 = this.mChangesList.get(size9);
|
|
for (int size10 = arrayList3.size() - 1; size10 >= 0; size10--) {
|
|
endChangeAnimationIfNecessary(arrayList3.get(size10));
|
|
if (arrayList3.isEmpty()) {
|
|
this.mChangesList.remove(arrayList3);
|
|
}
|
|
}
|
|
}
|
|
cancelAll(this.mRemoveAnimations);
|
|
cancelAll(this.mMoveAnimations);
|
|
cancelAll(this.mAddAnimations);
|
|
cancelAll(this.mChangeAnimations);
|
|
dispatchAnimationsFinished();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
|
|
public boolean isRunning() {
|
|
return !this.mPendingAdditions.isEmpty() || !this.mPendingChanges.isEmpty() || !this.mPendingMoves.isEmpty() || !this.mPendingRemovals.isEmpty() || !this.mMoveAnimations.isEmpty() || !this.mRemoveAnimations.isEmpty() || !this.mAddAnimations.isEmpty() || !this.mChangeAnimations.isEmpty() || !this.mMovesList.isEmpty() || !this.mAdditionsList.isEmpty() || !this.mChangesList.isEmpty();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
|
|
public void runPendingAnimations() {
|
|
boolean z2 = !this.mPendingRemovals.isEmpty();
|
|
boolean z3 = !this.mPendingMoves.isEmpty();
|
|
boolean z4 = !this.mPendingChanges.isEmpty();
|
|
boolean z5 = !this.mPendingAdditions.isEmpty();
|
|
if (z2 || z3 || z5 || z4) {
|
|
Iterator<RecyclerView.ViewHolder> it = this.mPendingRemovals.iterator();
|
|
while (it.hasNext()) {
|
|
animateRemoveImpl(it.next());
|
|
}
|
|
this.mPendingRemovals.clear();
|
|
if (z3) {
|
|
ArrayList<MoveInfo> arrayList = new ArrayList<>();
|
|
arrayList.addAll(this.mPendingMoves);
|
|
this.mMovesList.add(arrayList);
|
|
this.mPendingMoves.clear();
|
|
AnonymousClass1 r6 = new AnonymousClass1(arrayList);
|
|
if (z2) {
|
|
ViewCompat.postOnAnimationDelayed(arrayList.get(0).holder.itemView, r6, getRemoveDuration());
|
|
} else {
|
|
r6.run();
|
|
}
|
|
}
|
|
if (z4) {
|
|
ArrayList<ChangeInfo> arrayList2 = new ArrayList<>();
|
|
arrayList2.addAll(this.mPendingChanges);
|
|
this.mChangesList.add(arrayList2);
|
|
this.mPendingChanges.clear();
|
|
AnonymousClass2 r62 = new AnonymousClass2(arrayList2);
|
|
if (z2) {
|
|
ViewCompat.postOnAnimationDelayed(arrayList2.get(0).oldHolder.itemView, r62, getRemoveDuration());
|
|
} else {
|
|
r62.run();
|
|
}
|
|
}
|
|
if (z5) {
|
|
ArrayList<RecyclerView.ViewHolder> arrayList3 = new ArrayList<>();
|
|
arrayList3.addAll(this.mPendingAdditions);
|
|
this.mAdditionsList.add(arrayList3);
|
|
this.mPendingAdditions.clear();
|
|
AnonymousClass3 r5 = new AnonymousClass3(arrayList3);
|
|
if (z2 || z3 || z4) {
|
|
long j = 0;
|
|
long removeDuration = z2 ? getRemoveDuration() : 0;
|
|
long moveDuration = z3 ? getMoveDuration() : 0;
|
|
if (z4) {
|
|
j = getChangeDuration();
|
|
}
|
|
ViewCompat.postOnAnimationDelayed(arrayList3.get(0).itemView, r5, Math.max(moveDuration, j) + removeDuration);
|
|
return;
|
|
}
|
|
r5.run();
|
|
}
|
|
}
|
|
}
|
|
}
|