mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-25 16:42:30 -06:00
569 lines
26 KiB
Java
569 lines
26 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.core.view.ViewCompat;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class DefaultItemAnimator extends SimpleItemAnimator {
|
|
private static final boolean DEBUG = false;
|
|
private static TimeInterpolator sDefaultInterpolator;
|
|
private ArrayList<RecyclerView.ViewHolder> mPendingRemovals = new ArrayList<>();
|
|
private ArrayList<RecyclerView.ViewHolder> mPendingAdditions = new ArrayList<>();
|
|
private ArrayList<MoveInfo> mPendingMoves = new ArrayList<>();
|
|
private ArrayList<ChangeInfo> mPendingChanges = new ArrayList<>();
|
|
ArrayList<ArrayList<RecyclerView.ViewHolder>> mAdditionsList = new ArrayList<>();
|
|
ArrayList<ArrayList<MoveInfo>> mMovesList = new ArrayList<>();
|
|
ArrayList<ArrayList<ChangeInfo>> mChangesList = new ArrayList<>();
|
|
ArrayList<RecyclerView.ViewHolder> mAddAnimations = new ArrayList<>();
|
|
ArrayList<RecyclerView.ViewHolder> mMoveAnimations = new ArrayList<>();
|
|
ArrayList<RecyclerView.ViewHolder> mRemoveAnimations = new ArrayList<>();
|
|
ArrayList<RecyclerView.ViewHolder> mChangeAnimations = new ArrayList<>();
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* loaded from: classes2.dex */
|
|
public static class MoveInfo {
|
|
public int fromX;
|
|
public int fromY;
|
|
public RecyclerView.ViewHolder holder;
|
|
public int toX;
|
|
public int toY;
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* loaded from: classes2.dex */
|
|
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;
|
|
}
|
|
|
|
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() {
|
|
return "ChangeInfo{oldHolder=" + this.oldHolder + ", newHolder=" + this.newHolder + ", fromX=" + this.fromX + ", fromY=" + this.fromY + ", toX=" + this.toX + ", toY=" + this.toY + '}';
|
|
}
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
|
|
public void runPendingAnimations() {
|
|
boolean z = !this.mPendingRemovals.isEmpty();
|
|
boolean z2 = !this.mPendingMoves.isEmpty();
|
|
boolean z3 = !this.mPendingChanges.isEmpty();
|
|
boolean z4 = !this.mPendingAdditions.isEmpty();
|
|
if (z || z2 || z4 || z3) {
|
|
Iterator<RecyclerView.ViewHolder> it = this.mPendingRemovals.iterator();
|
|
while (it.hasNext()) {
|
|
animateRemoveImpl(it.next());
|
|
}
|
|
this.mPendingRemovals.clear();
|
|
if (z2) {
|
|
final ArrayList<MoveInfo> arrayList = new ArrayList<>();
|
|
arrayList.addAll(this.mPendingMoves);
|
|
this.mMovesList.add(arrayList);
|
|
this.mPendingMoves.clear();
|
|
Runnable runnable = new Runnable() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.1
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
Iterator it2 = arrayList.iterator();
|
|
while (it2.hasNext()) {
|
|
MoveInfo moveInfo = (MoveInfo) it2.next();
|
|
DefaultItemAnimator.this.animateMoveImpl(moveInfo.holder, moveInfo.fromX, moveInfo.fromY, moveInfo.toX, moveInfo.toY);
|
|
}
|
|
arrayList.clear();
|
|
DefaultItemAnimator.this.mMovesList.remove(arrayList);
|
|
}
|
|
};
|
|
if (z) {
|
|
ViewCompat.postOnAnimationDelayed(arrayList.get(0).holder.itemView, runnable, getRemoveDuration());
|
|
} else {
|
|
runnable.run();
|
|
}
|
|
}
|
|
if (z3) {
|
|
final ArrayList<ChangeInfo> arrayList2 = new ArrayList<>();
|
|
arrayList2.addAll(this.mPendingChanges);
|
|
this.mChangesList.add(arrayList2);
|
|
this.mPendingChanges.clear();
|
|
Runnable runnable2 = new Runnable() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.2
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
Iterator it2 = arrayList2.iterator();
|
|
while (it2.hasNext()) {
|
|
DefaultItemAnimator.this.animateChangeImpl((ChangeInfo) it2.next());
|
|
}
|
|
arrayList2.clear();
|
|
DefaultItemAnimator.this.mChangesList.remove(arrayList2);
|
|
}
|
|
};
|
|
if (z) {
|
|
ViewCompat.postOnAnimationDelayed(arrayList2.get(0).oldHolder.itemView, runnable2, getRemoveDuration());
|
|
} else {
|
|
runnable2.run();
|
|
}
|
|
}
|
|
if (z4) {
|
|
final ArrayList<RecyclerView.ViewHolder> arrayList3 = new ArrayList<>();
|
|
arrayList3.addAll(this.mPendingAdditions);
|
|
this.mAdditionsList.add(arrayList3);
|
|
this.mPendingAdditions.clear();
|
|
Runnable runnable3 = new Runnable() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.3
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
Iterator it2 = arrayList3.iterator();
|
|
while (it2.hasNext()) {
|
|
DefaultItemAnimator.this.animateAddImpl((RecyclerView.ViewHolder) it2.next());
|
|
}
|
|
arrayList3.clear();
|
|
DefaultItemAnimator.this.mAdditionsList.remove(arrayList3);
|
|
}
|
|
};
|
|
if (z || z2 || z3) {
|
|
ViewCompat.postOnAnimationDelayed(arrayList3.get(0).itemView, runnable3, (z ? getRemoveDuration() : 0L) + Math.max(z2 ? getMoveDuration() : 0L, z3 ? getChangeDuration() : 0L));
|
|
} else {
|
|
runnable3.run();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.SimpleItemAnimator
|
|
public boolean animateRemove(RecyclerView.ViewHolder viewHolder) {
|
|
resetAnimation(viewHolder);
|
|
this.mPendingRemovals.add(viewHolder);
|
|
return true;
|
|
}
|
|
|
|
private void animateRemoveImpl(final RecyclerView.ViewHolder viewHolder) {
|
|
final View view = viewHolder.itemView;
|
|
final ViewPropertyAnimator animate = view.animate();
|
|
this.mRemoveAnimations.add(viewHolder);
|
|
animate.setDuration(getRemoveDuration()).alpha(0.0f).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.4
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchRemoveStarting(viewHolder);
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
animate.setListener(null);
|
|
view.setAlpha(1.0f);
|
|
DefaultItemAnimator.this.dispatchRemoveFinished(viewHolder);
|
|
DefaultItemAnimator.this.mRemoveAnimations.remove(viewHolder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
}).start();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.SimpleItemAnimator
|
|
public boolean animateAdd(RecyclerView.ViewHolder viewHolder) {
|
|
resetAnimation(viewHolder);
|
|
viewHolder.itemView.setAlpha(0.0f);
|
|
this.mPendingAdditions.add(viewHolder);
|
|
return true;
|
|
}
|
|
|
|
void animateAddImpl(final RecyclerView.ViewHolder viewHolder) {
|
|
final View view = viewHolder.itemView;
|
|
final ViewPropertyAnimator animate = view.animate();
|
|
this.mAddAnimations.add(viewHolder);
|
|
animate.alpha(1.0f).setDuration(getAddDuration()).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.5
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchAddStarting(viewHolder);
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationCancel(Animator animator) {
|
|
view.setAlpha(1.0f);
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
animate.setListener(null);
|
|
DefaultItemAnimator.this.dispatchAddFinished(viewHolder);
|
|
DefaultItemAnimator.this.mAddAnimations.remove(viewHolder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
}).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) viewHolder.itemView.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(-i5);
|
|
}
|
|
if (i6 != 0) {
|
|
view.setTranslationY(-i6);
|
|
}
|
|
this.mPendingMoves.add(new MoveInfo(viewHolder, translationX, translationY, i3, i4));
|
|
return true;
|
|
}
|
|
|
|
void animateMoveImpl(final RecyclerView.ViewHolder viewHolder, int i, int i2, int i3, int i4) {
|
|
final View view = viewHolder.itemView;
|
|
final int i5 = i3 - i;
|
|
final int i6 = i4 - i2;
|
|
if (i5 != 0) {
|
|
view.animate().translationX(0.0f);
|
|
}
|
|
if (i6 != 0) {
|
|
view.animate().translationY(0.0f);
|
|
}
|
|
final ViewPropertyAnimator animate = view.animate();
|
|
this.mMoveAnimations.add(viewHolder);
|
|
animate.setDuration(getMoveDuration()).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.6
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchMoveStarting(viewHolder);
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationCancel(Animator animator) {
|
|
if (i5 != 0) {
|
|
view.setTranslationX(0.0f);
|
|
}
|
|
if (i6 != 0) {
|
|
view.setTranslationY(0.0f);
|
|
}
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
animate.setListener(null);
|
|
DefaultItemAnimator.this.dispatchMoveFinished(viewHolder);
|
|
DefaultItemAnimator.this.mMoveAnimations.remove(viewHolder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
}).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) ((i3 - i) - translationX);
|
|
int i6 = (int) ((i4 - i2) - translationY);
|
|
viewHolder.itemView.setTranslationX(translationX);
|
|
viewHolder.itemView.setTranslationY(translationY);
|
|
viewHolder.itemView.setAlpha(alpha);
|
|
if (viewHolder2 != null) {
|
|
resetAnimation(viewHolder2);
|
|
viewHolder2.itemView.setTranslationX(-i5);
|
|
viewHolder2.itemView.setTranslationY(-i6);
|
|
viewHolder2.itemView.setAlpha(0.0f);
|
|
}
|
|
this.mPendingChanges.add(new ChangeInfo(viewHolder, viewHolder2, i, i2, i3, i4));
|
|
return true;
|
|
}
|
|
|
|
void animateChangeImpl(final ChangeInfo changeInfo) {
|
|
RecyclerView.ViewHolder viewHolder = changeInfo.oldHolder;
|
|
final View view = viewHolder == null ? null : viewHolder.itemView;
|
|
RecyclerView.ViewHolder viewHolder2 = changeInfo.newHolder;
|
|
final View view2 = viewHolder2 != null ? viewHolder2.itemView : null;
|
|
if (view != null) {
|
|
final ViewPropertyAnimator duration = view.animate().setDuration(getChangeDuration());
|
|
this.mChangeAnimations.add(changeInfo.oldHolder);
|
|
duration.translationX(changeInfo.toX - changeInfo.fromX);
|
|
duration.translationY(changeInfo.toY - changeInfo.fromY);
|
|
duration.alpha(0.0f).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.7
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchChangeStarting(changeInfo.oldHolder, true);
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
duration.setListener(null);
|
|
view.setAlpha(1.0f);
|
|
view.setTranslationX(0.0f);
|
|
view.setTranslationY(0.0f);
|
|
DefaultItemAnimator.this.dispatchChangeFinished(changeInfo.oldHolder, true);
|
|
DefaultItemAnimator.this.mChangeAnimations.remove(changeInfo.oldHolder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
}).start();
|
|
}
|
|
if (view2 != null) {
|
|
final ViewPropertyAnimator animate = view2.animate();
|
|
this.mChangeAnimations.add(changeInfo.newHolder);
|
|
animate.translationX(0.0f).translationY(0.0f).setDuration(getChangeDuration()).alpha(1.0f).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.8
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationStart(Animator animator) {
|
|
DefaultItemAnimator.this.dispatchChangeStarting(changeInfo.newHolder, false);
|
|
}
|
|
|
|
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
|
|
public void onAnimationEnd(Animator animator) {
|
|
animate.setListener(null);
|
|
view2.setAlpha(1.0f);
|
|
view2.setTranslationX(0.0f);
|
|
view2.setTranslationY(0.0f);
|
|
DefaultItemAnimator.this.dispatchChangeFinished(changeInfo.newHolder, false);
|
|
DefaultItemAnimator.this.mChangeAnimations.remove(changeInfo.newHolder);
|
|
DefaultItemAnimator.this.dispatchFinishedWhenDone();
|
|
}
|
|
}).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) {
|
|
if (changeInfo.oldHolder != null) {
|
|
endChangeAnimationIfNecessary(changeInfo, changeInfo.oldHolder);
|
|
}
|
|
if (changeInfo.newHolder != null) {
|
|
endChangeAnimationIfNecessary(changeInfo, changeInfo.newHolder);
|
|
}
|
|
}
|
|
|
|
private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, RecyclerView.ViewHolder viewHolder) {
|
|
boolean z = false;
|
|
if (changeInfo.newHolder == viewHolder) {
|
|
changeInfo.newHolder = null;
|
|
} else {
|
|
if (changeInfo.oldHolder != viewHolder) {
|
|
return false;
|
|
}
|
|
changeInfo.oldHolder = null;
|
|
z = true;
|
|
}
|
|
viewHolder.itemView.setAlpha(1.0f);
|
|
viewHolder.itemView.setTranslationX(0.0f);
|
|
viewHolder.itemView.setTranslationY(0.0f);
|
|
dispatchChangeFinished(viewHolder, z);
|
|
return true;
|
|
}
|
|
|
|
@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;
|
|
}
|
|
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;
|
|
}
|
|
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();
|
|
}
|
|
|
|
private void resetAnimation(RecyclerView.ViewHolder viewHolder) {
|
|
if (sDefaultInterpolator == null) {
|
|
sDefaultInterpolator = new ValueAnimator().getInterpolator();
|
|
}
|
|
viewHolder.itemView.animate().setInterpolator(sDefaultInterpolator);
|
|
endAnimation(viewHolder);
|
|
}
|
|
|
|
@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()) ? false : true;
|
|
}
|
|
|
|
void dispatchFinishedWhenDone() {
|
|
if (isRunning()) {
|
|
return;
|
|
}
|
|
dispatchAnimationsFinished();
|
|
}
|
|
|
|
@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();
|
|
}
|
|
}
|
|
|
|
void cancelAll(List<RecyclerView.ViewHolder> list) {
|
|
for (int size = list.size() - 1; size >= 0; size--) {
|
|
list.get(size).itemView.animate().cancel();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
|
|
public boolean canReuseUpdatedViewHolder(RecyclerView.ViewHolder viewHolder, List<Object> list) {
|
|
return !list.isEmpty() || super.canReuseUpdatedViewHolder(viewHolder, list);
|
|
}
|
|
}
|