jimu-decompiled/sources/androidx/recyclerview/widget/DefaultItemAnimator.java
2025-05-13 19:24:51 +02:00

567 lines
22 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: classes.dex */
public class DefaultItemAnimator extends SimpleItemAnimator {
private static TimeInterpolator s;
private ArrayList<RecyclerView.ViewHolder> h = new ArrayList<>();
private ArrayList<RecyclerView.ViewHolder> i = new ArrayList<>();
private ArrayList<MoveInfo> j = new ArrayList<>();
private ArrayList<ChangeInfo> k = new ArrayList<>();
ArrayList<ArrayList<RecyclerView.ViewHolder>> l = new ArrayList<>();
ArrayList<ArrayList<MoveInfo>> m = new ArrayList<>();
ArrayList<ArrayList<ChangeInfo>> n = new ArrayList<>();
ArrayList<RecyclerView.ViewHolder> o = new ArrayList<>();
ArrayList<RecyclerView.ViewHolder> p = new ArrayList<>();
ArrayList<RecyclerView.ViewHolder> q = new ArrayList<>();
ArrayList<RecyclerView.ViewHolder> r = new ArrayList<>();
private static class MoveInfo {
public RecyclerView.ViewHolder a;
public int b;
public int c;
public int d;
public int e;
MoveInfo(RecyclerView.ViewHolder viewHolder, int i, int i2, int i3, int i4) {
this.a = viewHolder;
this.b = i;
this.c = i2;
this.d = i3;
this.e = i4;
}
}
private void u(final RecyclerView.ViewHolder viewHolder) {
final View view = viewHolder.itemView;
final ViewPropertyAnimator animate = view.animate();
this.q.add(viewHolder);
animate.setDuration(f()).alpha(0.0f).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.4
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
animate.setListener(null);
view.setAlpha(1.0f);
DefaultItemAnimator.this.l(viewHolder);
DefaultItemAnimator.this.q.remove(viewHolder);
DefaultItemAnimator.this.j();
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationStart(Animator animator) {
DefaultItemAnimator.this.m(viewHolder);
}
}).start();
}
private void v(RecyclerView.ViewHolder viewHolder) {
if (s == null) {
s = new ValueAnimator().getInterpolator();
}
viewHolder.itemView.animate().setInterpolator(s);
c(viewHolder);
}
@Override // androidx.recyclerview.widget.SimpleItemAnimator
public boolean a(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());
v(viewHolder);
int i5 = i3 - translationX;
int i6 = i4 - translationY;
if (i5 == 0 && i6 == 0) {
j(viewHolder);
return false;
}
if (i5 != 0) {
view.setTranslationX(-i5);
}
if (i6 != 0) {
view.setTranslationY(-i6);
}
this.j.add(new MoveInfo(viewHolder, translationX, translationY, i3, i4));
return true;
}
void b(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.p.add(viewHolder);
animate.setDuration(e()).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.6
@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.j(viewHolder);
DefaultItemAnimator.this.p.remove(viewHolder);
DefaultItemAnimator.this.j();
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationStart(Animator animator) {
DefaultItemAnimator.this.k(viewHolder);
}
}).start();
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
public void c(RecyclerView.ViewHolder viewHolder) {
View view = viewHolder.itemView;
view.animate().cancel();
int size = this.j.size();
while (true) {
size--;
if (size < 0) {
break;
}
if (this.j.get(size).a == viewHolder) {
view.setTranslationY(0.0f);
view.setTranslationX(0.0f);
j(viewHolder);
this.j.remove(size);
}
}
a(this.k, viewHolder);
if (this.h.remove(viewHolder)) {
view.setAlpha(1.0f);
l(viewHolder);
}
if (this.i.remove(viewHolder)) {
view.setAlpha(1.0f);
h(viewHolder);
}
for (int size2 = this.n.size() - 1; size2 >= 0; size2--) {
ArrayList<ChangeInfo> arrayList = this.n.get(size2);
a(arrayList, viewHolder);
if (arrayList.isEmpty()) {
this.n.remove(size2);
}
}
for (int size3 = this.m.size() - 1; size3 >= 0; size3--) {
ArrayList<MoveInfo> arrayList2 = this.m.get(size3);
int size4 = arrayList2.size() - 1;
while (true) {
if (size4 < 0) {
break;
}
if (arrayList2.get(size4).a == viewHolder) {
view.setTranslationY(0.0f);
view.setTranslationX(0.0f);
j(viewHolder);
arrayList2.remove(size4);
if (arrayList2.isEmpty()) {
this.m.remove(size3);
}
} else {
size4--;
}
}
}
for (int size5 = this.l.size() - 1; size5 >= 0; size5--) {
ArrayList<RecyclerView.ViewHolder> arrayList3 = this.l.get(size5);
if (arrayList3.remove(viewHolder)) {
view.setAlpha(1.0f);
h(viewHolder);
if (arrayList3.isEmpty()) {
this.l.remove(size5);
}
}
}
this.q.remove(viewHolder);
this.o.remove(viewHolder);
this.r.remove(viewHolder);
this.p.remove(viewHolder);
j();
}
@Override // androidx.recyclerview.widget.SimpleItemAnimator
public boolean f(RecyclerView.ViewHolder viewHolder) {
v(viewHolder);
viewHolder.itemView.setAlpha(0.0f);
this.i.add(viewHolder);
return true;
}
@Override // androidx.recyclerview.widget.SimpleItemAnimator
public boolean g(RecyclerView.ViewHolder viewHolder) {
v(viewHolder);
this.h.add(viewHolder);
return true;
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
public void i() {
boolean z = !this.h.isEmpty();
boolean z2 = !this.j.isEmpty();
boolean z3 = !this.k.isEmpty();
boolean z4 = !this.i.isEmpty();
if (z || z2 || z4 || z3) {
Iterator<RecyclerView.ViewHolder> it = this.h.iterator();
while (it.hasNext()) {
u(it.next());
}
this.h.clear();
if (z2) {
final ArrayList<MoveInfo> arrayList = new ArrayList<>();
arrayList.addAll(this.j);
this.m.add(arrayList);
this.j.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.b(moveInfo.a, moveInfo.b, moveInfo.c, moveInfo.d, moveInfo.e);
}
arrayList.clear();
DefaultItemAnimator.this.m.remove(arrayList);
}
};
if (z) {
ViewCompat.a(arrayList.get(0).a.itemView, runnable, f());
} else {
runnable.run();
}
}
if (z3) {
final ArrayList<ChangeInfo> arrayList2 = new ArrayList<>();
arrayList2.addAll(this.k);
this.n.add(arrayList2);
this.k.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.a((ChangeInfo) it2.next());
}
arrayList2.clear();
DefaultItemAnimator.this.n.remove(arrayList2);
}
};
if (z) {
ViewCompat.a(arrayList2.get(0).a.itemView, runnable2, f());
} else {
runnable2.run();
}
}
if (z4) {
final ArrayList<RecyclerView.ViewHolder> arrayList3 = new ArrayList<>();
arrayList3.addAll(this.i);
this.l.add(arrayList3);
this.i.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.t((RecyclerView.ViewHolder) it2.next());
}
arrayList3.clear();
DefaultItemAnimator.this.l.remove(arrayList3);
}
};
if (z || z2 || z3) {
ViewCompat.a(arrayList3.get(0).itemView, runnable3, (z ? f() : 0L) + Math.max(z2 ? e() : 0L, z3 ? d() : 0L));
} else {
runnable3.run();
}
}
}
}
void j() {
if (g()) {
return;
}
a();
}
void t(final RecyclerView.ViewHolder viewHolder) {
final View view = viewHolder.itemView;
final ViewPropertyAnimator animate = view.animate();
this.o.add(viewHolder);
animate.alpha(1.0f).setDuration(c()).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.5
@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.h(viewHolder);
DefaultItemAnimator.this.o.remove(viewHolder);
DefaultItemAnimator.this.j();
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationStart(Animator animator) {
DefaultItemAnimator.this.i(viewHolder);
}
}).start();
}
private static class ChangeInfo {
public RecyclerView.ViewHolder a;
public RecyclerView.ViewHolder b;
public int c;
public int d;
public int e;
public int f;
private ChangeInfo(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2) {
this.a = viewHolder;
this.b = viewHolder2;
}
public String toString() {
return "ChangeInfo{oldHolder=" + this.a + ", newHolder=" + this.b + ", fromX=" + this.c + ", fromY=" + this.d + ", toX=" + this.e + ", toY=" + this.f + '}';
}
ChangeInfo(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2, int i, int i2, int i3, int i4) {
this(viewHolder, viewHolder2);
this.c = i;
this.d = i2;
this.e = i3;
this.f = i4;
}
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
public boolean g() {
return (this.i.isEmpty() && this.k.isEmpty() && this.j.isEmpty() && this.h.isEmpty() && this.p.isEmpty() && this.q.isEmpty() && this.o.isEmpty() && this.r.isEmpty() && this.m.isEmpty() && this.l.isEmpty() && this.n.isEmpty()) ? false : true;
}
private void b(ChangeInfo changeInfo) {
RecyclerView.ViewHolder viewHolder = changeInfo.a;
if (viewHolder != null) {
a(changeInfo, viewHolder);
}
RecyclerView.ViewHolder viewHolder2 = changeInfo.b;
if (viewHolder2 != null) {
a(changeInfo, viewHolder2);
}
}
@Override // androidx.recyclerview.widget.SimpleItemAnimator
public boolean a(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2, int i, int i2, int i3, int i4) {
if (viewHolder == viewHolder2) {
return a(viewHolder, i, i2, i3, i4);
}
float translationX = viewHolder.itemView.getTranslationX();
float translationY = viewHolder.itemView.getTranslationY();
float alpha = viewHolder.itemView.getAlpha();
v(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) {
v(viewHolder2);
viewHolder2.itemView.setTranslationX(-i5);
viewHolder2.itemView.setTranslationY(-i6);
viewHolder2.itemView.setAlpha(0.0f);
}
this.k.add(new ChangeInfo(viewHolder, viewHolder2, i, i2, i3, i4));
return true;
}
@Override // androidx.recyclerview.widget.RecyclerView.ItemAnimator
public void b() {
int size = this.j.size();
while (true) {
size--;
if (size < 0) {
break;
}
MoveInfo moveInfo = this.j.get(size);
View view = moveInfo.a.itemView;
view.setTranslationY(0.0f);
view.setTranslationX(0.0f);
j(moveInfo.a);
this.j.remove(size);
}
for (int size2 = this.h.size() - 1; size2 >= 0; size2--) {
l(this.h.get(size2));
this.h.remove(size2);
}
int size3 = this.i.size();
while (true) {
size3--;
if (size3 < 0) {
break;
}
RecyclerView.ViewHolder viewHolder = this.i.get(size3);
viewHolder.itemView.setAlpha(1.0f);
h(viewHolder);
this.i.remove(size3);
}
for (int size4 = this.k.size() - 1; size4 >= 0; size4--) {
b(this.k.get(size4));
}
this.k.clear();
if (g()) {
for (int size5 = this.m.size() - 1; size5 >= 0; size5--) {
ArrayList<MoveInfo> arrayList = this.m.get(size5);
for (int size6 = arrayList.size() - 1; size6 >= 0; size6--) {
MoveInfo moveInfo2 = arrayList.get(size6);
View view2 = moveInfo2.a.itemView;
view2.setTranslationY(0.0f);
view2.setTranslationX(0.0f);
j(moveInfo2.a);
arrayList.remove(size6);
if (arrayList.isEmpty()) {
this.m.remove(arrayList);
}
}
}
for (int size7 = this.l.size() - 1; size7 >= 0; size7--) {
ArrayList<RecyclerView.ViewHolder> arrayList2 = this.l.get(size7);
for (int size8 = arrayList2.size() - 1; size8 >= 0; size8--) {
RecyclerView.ViewHolder viewHolder2 = arrayList2.get(size8);
viewHolder2.itemView.setAlpha(1.0f);
h(viewHolder2);
arrayList2.remove(size8);
if (arrayList2.isEmpty()) {
this.l.remove(arrayList2);
}
}
}
for (int size9 = this.n.size() - 1; size9 >= 0; size9--) {
ArrayList<ChangeInfo> arrayList3 = this.n.get(size9);
for (int size10 = arrayList3.size() - 1; size10 >= 0; size10--) {
b(arrayList3.get(size10));
if (arrayList3.isEmpty()) {
this.n.remove(arrayList3);
}
}
}
a(this.q);
a(this.p);
a(this.o);
a(this.r);
a();
}
}
void a(final ChangeInfo changeInfo) {
RecyclerView.ViewHolder viewHolder = changeInfo.a;
final View view = viewHolder == null ? null : viewHolder.itemView;
RecyclerView.ViewHolder viewHolder2 = changeInfo.b;
final View view2 = viewHolder2 != null ? viewHolder2.itemView : null;
if (view != null) {
final ViewPropertyAnimator duration = view.animate().setDuration(d());
this.r.add(changeInfo.a);
duration.translationX(changeInfo.e - changeInfo.c);
duration.translationY(changeInfo.f - changeInfo.d);
duration.alpha(0.0f).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.7
@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.a(changeInfo.a, true);
DefaultItemAnimator.this.r.remove(changeInfo.a);
DefaultItemAnimator.this.j();
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationStart(Animator animator) {
DefaultItemAnimator.this.b(changeInfo.a, true);
}
}).start();
}
if (view2 != null) {
final ViewPropertyAnimator animate = view2.animate();
this.r.add(changeInfo.b);
animate.translationX(0.0f).translationY(0.0f).setDuration(d()).alpha(1.0f).setListener(new AnimatorListenerAdapter() { // from class: androidx.recyclerview.widget.DefaultItemAnimator.8
@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.a(changeInfo.b, false);
DefaultItemAnimator.this.r.remove(changeInfo.b);
DefaultItemAnimator.this.j();
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationStart(Animator animator) {
DefaultItemAnimator.this.b(changeInfo.b, false);
}
}).start();
}
}
private void a(List<ChangeInfo> list, RecyclerView.ViewHolder viewHolder) {
for (int size = list.size() - 1; size >= 0; size--) {
ChangeInfo changeInfo = list.get(size);
if (a(changeInfo, viewHolder) && changeInfo.a == null && changeInfo.b == null) {
list.remove(changeInfo);
}
}
}
private boolean a(ChangeInfo changeInfo, RecyclerView.ViewHolder viewHolder) {
boolean z = false;
if (changeInfo.b == viewHolder) {
changeInfo.b = null;
} else {
if (changeInfo.a != viewHolder) {
return false;
}
changeInfo.a = null;
z = true;
}
viewHolder.itemView.setAlpha(1.0f);
viewHolder.itemView.setTranslationX(0.0f);
viewHolder.itemView.setTranslationY(0.0f);
a(viewHolder, z);
return true;
}
void a(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 a(RecyclerView.ViewHolder viewHolder, List<Object> list) {
return !list.isEmpty() || super.a(viewHolder, list);
}
}