136 lines
4.9 KiB
Java
136 lines
4.9 KiB
Java
package androidx.transition;
|
|
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.view.ViewTreeObserver;
|
|
import androidx.collection.ArrayMap;
|
|
import androidx.core.view.ViewCompat;
|
|
import java.lang.ref.WeakReference;
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class TransitionManager {
|
|
private static Transition a = new AutoTransition();
|
|
private static ThreadLocal<WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>>> b = new ThreadLocal<>();
|
|
static ArrayList<ViewGroup> c = new ArrayList<>();
|
|
|
|
private static class MultiListener implements ViewTreeObserver.OnPreDrawListener, View.OnAttachStateChangeListener {
|
|
Transition a;
|
|
ViewGroup b;
|
|
|
|
MultiListener(Transition transition, ViewGroup viewGroup) {
|
|
this.a = transition;
|
|
this.b = viewGroup;
|
|
}
|
|
|
|
private void a() {
|
|
this.b.getViewTreeObserver().removeOnPreDrawListener(this);
|
|
this.b.removeOnAttachStateChangeListener(this);
|
|
}
|
|
|
|
@Override // android.view.ViewTreeObserver.OnPreDrawListener
|
|
public boolean onPreDraw() {
|
|
a();
|
|
if (!TransitionManager.c.remove(this.b)) {
|
|
return true;
|
|
}
|
|
final ArrayMap<ViewGroup, ArrayList<Transition>> a = TransitionManager.a();
|
|
ArrayList<Transition> arrayList = a.get(this.b);
|
|
ArrayList arrayList2 = null;
|
|
if (arrayList == null) {
|
|
arrayList = new ArrayList<>();
|
|
a.put(this.b, arrayList);
|
|
} else if (arrayList.size() > 0) {
|
|
arrayList2 = new ArrayList(arrayList);
|
|
}
|
|
arrayList.add(this.a);
|
|
this.a.a(new TransitionListenerAdapter() { // from class: androidx.transition.TransitionManager.MultiListener.1
|
|
/* JADX WARN: Multi-variable type inference failed */
|
|
@Override // androidx.transition.Transition.TransitionListener
|
|
public void c(Transition transition) {
|
|
((ArrayList) a.get(MultiListener.this.b)).remove(transition);
|
|
}
|
|
});
|
|
this.a.a(this.b, false);
|
|
if (arrayList2 != null) {
|
|
Iterator it = arrayList2.iterator();
|
|
while (it.hasNext()) {
|
|
((Transition) it.next()).e(this.b);
|
|
}
|
|
}
|
|
this.a.a(this.b);
|
|
return true;
|
|
}
|
|
|
|
@Override // android.view.View.OnAttachStateChangeListener
|
|
public void onViewAttachedToWindow(View view) {
|
|
}
|
|
|
|
@Override // android.view.View.OnAttachStateChangeListener
|
|
public void onViewDetachedFromWindow(View view) {
|
|
a();
|
|
TransitionManager.c.remove(this.b);
|
|
ArrayList<Transition> arrayList = TransitionManager.a().get(this.b);
|
|
if (arrayList != null && arrayList.size() > 0) {
|
|
Iterator<Transition> it = arrayList.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().e(this.b);
|
|
}
|
|
}
|
|
this.a.a(true);
|
|
}
|
|
}
|
|
|
|
static ArrayMap<ViewGroup, ArrayList<Transition>> a() {
|
|
ArrayMap<ViewGroup, ArrayList<Transition>> arrayMap;
|
|
WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>> weakReference = b.get();
|
|
if (weakReference != null && (arrayMap = weakReference.get()) != null) {
|
|
return arrayMap;
|
|
}
|
|
ArrayMap<ViewGroup, ArrayList<Transition>> arrayMap2 = new ArrayMap<>();
|
|
b.set(new WeakReference<>(arrayMap2));
|
|
return arrayMap2;
|
|
}
|
|
|
|
private static void b(ViewGroup viewGroup, Transition transition) {
|
|
if (transition == null || viewGroup == null) {
|
|
return;
|
|
}
|
|
MultiListener multiListener = new MultiListener(transition, viewGroup);
|
|
viewGroup.addOnAttachStateChangeListener(multiListener);
|
|
viewGroup.getViewTreeObserver().addOnPreDrawListener(multiListener);
|
|
}
|
|
|
|
private static void c(ViewGroup viewGroup, Transition transition) {
|
|
ArrayList<Transition> arrayList = a().get(viewGroup);
|
|
if (arrayList != null && arrayList.size() > 0) {
|
|
Iterator<Transition> it = arrayList.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().c(viewGroup);
|
|
}
|
|
}
|
|
if (transition != null) {
|
|
transition.a(viewGroup, true);
|
|
}
|
|
Scene a2 = Scene.a(viewGroup);
|
|
if (a2 != null) {
|
|
a2.a();
|
|
}
|
|
}
|
|
|
|
public static void a(ViewGroup viewGroup, Transition transition) {
|
|
if (c.contains(viewGroup) || !ViewCompat.x(viewGroup)) {
|
|
return;
|
|
}
|
|
c.add(viewGroup);
|
|
if (transition == null) {
|
|
transition = a;
|
|
}
|
|
Transition mo3clone = transition.mo3clone();
|
|
c(viewGroup, mo3clone);
|
|
Scene.a(viewGroup, null);
|
|
b(viewGroup, mo3clone);
|
|
}
|
|
}
|