discord-jadx/app/src/main/java/androidx/transition/Transition.java

1318 lines
52 KiB
Java

package androidx.transition;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.TimeInterpolator;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.Path;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.view.InflateException;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.ListView;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.collection.ArrayMap;
import androidx.collection.LongSparseArray;
import androidx.core.content.res.TypedArrayUtils;
import androidx.core.view.ViewCompat;
import c.d.b.a.a;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
public abstract class Transition implements Cloneable {
public static final boolean DBG = false;
private static final int[] DEFAULT_MATCH_ORDER = {2, 1, 3, 4};
private static final String LOG_TAG = "Transition";
private static final int MATCH_FIRST = 1;
public static final int MATCH_ID = 3;
private static final String MATCH_ID_STR = "id";
public static final int MATCH_INSTANCE = 1;
private static final String MATCH_INSTANCE_STR = "instance";
public static final int MATCH_ITEM_ID = 4;
private static final String MATCH_ITEM_ID_STR = "itemId";
private static final int MATCH_LAST = 4;
public static final int MATCH_NAME = 2;
private static final String MATCH_NAME_STR = "name";
private static final PathMotion STRAIGHT_PATH_MOTION = new AnonymousClass1();
private static ThreadLocal<ArrayMap<Animator, AnimationInfo>> sRunningAnimators = new ThreadLocal<>();
private ArrayList<Animator> mAnimators = new ArrayList<>();
public boolean mCanRemoveViews = false;
public ArrayList<Animator> mCurrentAnimators = new ArrayList<>();
public long mDuration = -1;
private TransitionValuesMaps mEndValues = new TransitionValuesMaps();
private ArrayList<TransitionValues> mEndValuesList;
private boolean mEnded = false;
private EpicenterCallback mEpicenterCallback;
private TimeInterpolator mInterpolator = null;
private ArrayList<TransitionListener> mListeners = null;
private int[] mMatchOrder = DEFAULT_MATCH_ORDER;
private String mName = getClass().getName();
private ArrayMap<String, String> mNameOverrides;
private int mNumInstances = 0;
public TransitionSet mParent = null;
private PathMotion mPathMotion = STRAIGHT_PATH_MOTION;
private boolean mPaused = false;
public TransitionPropagation mPropagation;
private ViewGroup mSceneRoot = null;
private long mStartDelay = -1;
private TransitionValuesMaps mStartValues = new TransitionValuesMaps();
private ArrayList<TransitionValues> mStartValuesList;
private ArrayList<View> mTargetChildExcludes = null;
private ArrayList<View> mTargetExcludes = null;
private ArrayList<Integer> mTargetIdChildExcludes = null;
private ArrayList<Integer> mTargetIdExcludes = null;
public ArrayList<Integer> mTargetIds = new ArrayList<>();
private ArrayList<String> mTargetNameExcludes = null;
private ArrayList<String> mTargetNames = null;
private ArrayList<Class<?>> mTargetTypeChildExcludes = null;
private ArrayList<Class<?>> mTargetTypeExcludes = null;
private ArrayList<Class<?>> mTargetTypes = null;
public ArrayList<View> mTargets = new ArrayList<>();
/* renamed from: androidx.transition.Transition$1 reason: invalid class name */
public static class AnonymousClass1 extends PathMotion {
@Override // androidx.transition.PathMotion
public Path getPath(float f, float f2, float f3, float f4) {
Path path = new Path();
path.moveTo(f, f2);
path.lineTo(f3, f4);
return path;
}
}
/* renamed from: androidx.transition.Transition$2 reason: invalid class name */
public class AnonymousClass2 extends AnimatorListenerAdapter {
public final /* synthetic */ ArrayMap val$runningAnimators;
public AnonymousClass2(ArrayMap arrayMap) {
this.val$runningAnimators = arrayMap;
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
this.val$runningAnimators.remove(animator);
Transition.this.mCurrentAnimators.remove(animator);
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationStart(Animator animator) {
Transition.this.mCurrentAnimators.add(animator);
}
}
/* renamed from: androidx.transition.Transition$3 reason: invalid class name */
public class AnonymousClass3 extends AnimatorListenerAdapter {
public AnonymousClass3() {
}
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator) {
Transition.this.end();
animator.removeListener(this);
}
}
public static class AnimationInfo {
public String mName;
public Transition mTransition;
public TransitionValues mValues;
public View mView;
public WindowIdImpl mWindowId;
public AnimationInfo(View view, String str, Transition transition, WindowIdImpl windowIdImpl, TransitionValues transitionValues) {
this.mView = view;
this.mName = str;
this.mValues = transitionValues;
this.mWindowId = windowIdImpl;
this.mTransition = transition;
}
}
public static class ArrayListManager {
private ArrayListManager() {
}
public static <T> ArrayList<T> add(ArrayList<T> arrayList, T t) {
if (arrayList == null) {
arrayList = new ArrayList<>();
}
if (!arrayList.contains(t)) {
arrayList.add(t);
}
return arrayList;
}
public static <T> ArrayList<T> remove(ArrayList<T> arrayList, T t) {
if (arrayList == null) {
return arrayList;
}
arrayList.remove(t);
if (arrayList.isEmpty()) {
return null;
}
return arrayList;
}
}
public static abstract class EpicenterCallback {
public abstract Rect onGetEpicenter(@NonNull Transition transition);
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public @interface MatchOrder {
}
public interface TransitionListener {
void onTransitionCancel(@NonNull Transition transition);
void onTransitionEnd(@NonNull Transition transition);
void onTransitionPause(@NonNull Transition transition);
void onTransitionResume(@NonNull Transition transition);
void onTransitionStart(@NonNull Transition transition);
}
public Transition() {
}
@SuppressLint({"RestrictedApi"})
public Transition(Context context, AttributeSet attributeSet) {
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, Styleable.TRANSITION);
XmlResourceParser xmlResourceParser = (XmlResourceParser) attributeSet;
long namedInt = (long) TypedArrayUtils.getNamedInt(obtainStyledAttributes, xmlResourceParser, "duration", 1, -1);
if (namedInt >= 0) {
setDuration(namedInt);
}
long namedInt2 = (long) TypedArrayUtils.getNamedInt(obtainStyledAttributes, xmlResourceParser, "startDelay", 2, -1);
if (namedInt2 > 0) {
setStartDelay(namedInt2);
}
int namedResourceId = TypedArrayUtils.getNamedResourceId(obtainStyledAttributes, xmlResourceParser, "interpolator", 0, 0);
if (namedResourceId > 0) {
setInterpolator(AnimationUtils.loadInterpolator(context, namedResourceId));
}
String namedString = TypedArrayUtils.getNamedString(obtainStyledAttributes, xmlResourceParser, "matchOrder", 3);
if (namedString != null) {
setMatchOrder(parseMatchOrder(namedString));
}
obtainStyledAttributes.recycle();
}
private void addUnmatched(ArrayMap<View, TransitionValues> arrayMap, ArrayMap<View, TransitionValues> arrayMap2) {
for (int i = 0; i < arrayMap.size(); i++) {
TransitionValues valueAt = arrayMap.valueAt(i);
if (isValidTarget(valueAt.view)) {
this.mStartValuesList.add(valueAt);
this.mEndValuesList.add(null);
}
}
for (int i2 = 0; i2 < arrayMap2.size(); i2++) {
TransitionValues valueAt2 = arrayMap2.valueAt(i2);
if (isValidTarget(valueAt2.view)) {
this.mEndValuesList.add(valueAt2);
this.mStartValuesList.add(null);
}
}
}
private static void addViewValues(TransitionValuesMaps transitionValuesMaps, View view, TransitionValues transitionValues) {
transitionValuesMaps.mViewValues.put(view, transitionValues);
int id2 = view.getId();
if (id2 >= 0) {
if (transitionValuesMaps.mIdValues.indexOfKey(id2) >= 0) {
transitionValuesMaps.mIdValues.put(id2, null);
} else {
transitionValuesMaps.mIdValues.put(id2, view);
}
}
String transitionName = ViewCompat.getTransitionName(view);
if (transitionName != null) {
if (transitionValuesMaps.mNameValues.containsKey(transitionName)) {
transitionValuesMaps.mNameValues.put(transitionName, null);
} else {
transitionValuesMaps.mNameValues.put(transitionName, view);
}
}
if (view.getParent() instanceof ListView) {
ListView listView = (ListView) view.getParent();
if (listView.getAdapter().hasStableIds()) {
long itemIdAtPosition = listView.getItemIdAtPosition(listView.getPositionForView(view));
if (transitionValuesMaps.mItemIdValues.indexOfKey(itemIdAtPosition) >= 0) {
View view2 = transitionValuesMaps.mItemIdValues.get(itemIdAtPosition);
if (view2 != null) {
ViewCompat.setHasTransientState(view2, false);
transitionValuesMaps.mItemIdValues.put(itemIdAtPosition, null);
return;
}
return;
}
ViewCompat.setHasTransientState(view, true);
transitionValuesMaps.mItemIdValues.put(itemIdAtPosition, view);
}
}
}
private static boolean alreadyContains(int[] iArr, int i) {
int i2 = iArr[i];
for (int i3 = 0; i3 < i; i3++) {
if (iArr[i3] == i2) {
return true;
}
}
return false;
}
private void captureHierarchy(View view, boolean z2) {
if (view != null) {
int id2 = view.getId();
ArrayList<Integer> arrayList = this.mTargetIdExcludes;
if (arrayList == null || !arrayList.contains(Integer.valueOf(id2))) {
ArrayList<View> arrayList2 = this.mTargetExcludes;
if (arrayList2 == null || !arrayList2.contains(view)) {
ArrayList<Class<?>> arrayList3 = this.mTargetTypeExcludes;
if (arrayList3 != null) {
int size = arrayList3.size();
for (int i = 0; i < size; i++) {
if (this.mTargetTypeExcludes.get(i).isInstance(view)) {
return;
}
}
}
if (view.getParent() instanceof ViewGroup) {
TransitionValues transitionValues = new TransitionValues(view);
if (z2) {
captureStartValues(transitionValues);
} else {
captureEndValues(transitionValues);
}
transitionValues.mTargetedTransitions.add(this);
capturePropagationValues(transitionValues);
if (z2) {
addViewValues(this.mStartValues, view, transitionValues);
} else {
addViewValues(this.mEndValues, view, transitionValues);
}
}
if (view instanceof ViewGroup) {
ArrayList<Integer> arrayList4 = this.mTargetIdChildExcludes;
if (arrayList4 == null || !arrayList4.contains(Integer.valueOf(id2))) {
ArrayList<View> arrayList5 = this.mTargetChildExcludes;
if (arrayList5 == null || !arrayList5.contains(view)) {
ArrayList<Class<?>> arrayList6 = this.mTargetTypeChildExcludes;
if (arrayList6 != null) {
int size2 = arrayList6.size();
for (int i2 = 0; i2 < size2; i2++) {
if (this.mTargetTypeChildExcludes.get(i2).isInstance(view)) {
return;
}
}
}
ViewGroup viewGroup = (ViewGroup) view;
for (int i3 = 0; i3 < viewGroup.getChildCount(); i3++) {
captureHierarchy(viewGroup.getChildAt(i3), z2);
}
}
}
}
}
}
}
}
private ArrayList<Integer> excludeId(ArrayList<Integer> arrayList, int i, boolean z2) {
return i > 0 ? z2 ? ArrayListManager.add(arrayList, Integer.valueOf(i)) : ArrayListManager.remove(arrayList, Integer.valueOf(i)) : arrayList;
}
private static <T> ArrayList<T> excludeObject(ArrayList<T> arrayList, T t, boolean z2) {
return t != null ? z2 ? ArrayListManager.add(arrayList, t) : ArrayListManager.remove(arrayList, t) : arrayList;
}
private ArrayList<Class<?>> excludeType(ArrayList<Class<?>> arrayList, Class<?> cls, boolean z2) {
return cls != null ? z2 ? ArrayListManager.add(arrayList, cls) : ArrayListManager.remove(arrayList, cls) : arrayList;
}
private ArrayList<View> excludeView(ArrayList<View> arrayList, View view, boolean z2) {
return view != null ? z2 ? ArrayListManager.add(arrayList, view) : ArrayListManager.remove(arrayList, view) : arrayList;
}
private static ArrayMap<Animator, AnimationInfo> getRunningAnimators() {
ArrayMap<Animator, AnimationInfo> arrayMap = sRunningAnimators.get();
if (arrayMap != null) {
return arrayMap;
}
ArrayMap<Animator, AnimationInfo> arrayMap2 = new ArrayMap<>();
sRunningAnimators.set(arrayMap2);
return arrayMap2;
}
private static boolean isValidMatch(int i) {
return i >= 1 && i <= 4;
}
private static boolean isValueChanged(TransitionValues transitionValues, TransitionValues transitionValues2, String str) {
Object obj = transitionValues.values.get(str);
Object obj2 = transitionValues2.values.get(str);
if (obj == null && obj2 == null) {
return false;
}
if (obj == null || obj2 == null) {
return true;
}
return true ^ obj.equals(obj2);
}
private void matchIds(ArrayMap<View, TransitionValues> arrayMap, ArrayMap<View, TransitionValues> arrayMap2, SparseArray<View> sparseArray, SparseArray<View> sparseArray2) {
View view;
int size = sparseArray.size();
for (int i = 0; i < size; i++) {
View valueAt = sparseArray.valueAt(i);
if (valueAt != null && isValidTarget(valueAt) && (view = sparseArray2.get(sparseArray.keyAt(i))) != null && isValidTarget(view)) {
TransitionValues transitionValues = arrayMap.get(valueAt);
TransitionValues transitionValues2 = arrayMap2.get(view);
if (!(transitionValues == null || transitionValues2 == null)) {
this.mStartValuesList.add(transitionValues);
this.mEndValuesList.add(transitionValues2);
arrayMap.remove(valueAt);
arrayMap2.remove(view);
}
}
}
}
private void matchInstances(ArrayMap<View, TransitionValues> arrayMap, ArrayMap<View, TransitionValues> arrayMap2) {
TransitionValues remove;
for (int size = arrayMap.size() - 1; size >= 0; size--) {
View keyAt = arrayMap.keyAt(size);
if (keyAt != null && isValidTarget(keyAt) && (remove = arrayMap2.remove(keyAt)) != null && isValidTarget(remove.view)) {
this.mStartValuesList.add(arrayMap.removeAt(size));
this.mEndValuesList.add(remove);
}
}
}
private void matchItemIds(ArrayMap<View, TransitionValues> arrayMap, ArrayMap<View, TransitionValues> arrayMap2, LongSparseArray<View> longSparseArray, LongSparseArray<View> longSparseArray2) {
View view;
int size = longSparseArray.size();
for (int i = 0; i < size; i++) {
View valueAt = longSparseArray.valueAt(i);
if (valueAt != null && isValidTarget(valueAt) && (view = longSparseArray2.get(longSparseArray.keyAt(i))) != null && isValidTarget(view)) {
TransitionValues transitionValues = arrayMap.get(valueAt);
TransitionValues transitionValues2 = arrayMap2.get(view);
if (!(transitionValues == null || transitionValues2 == null)) {
this.mStartValuesList.add(transitionValues);
this.mEndValuesList.add(transitionValues2);
arrayMap.remove(valueAt);
arrayMap2.remove(view);
}
}
}
}
private void matchNames(ArrayMap<View, TransitionValues> arrayMap, ArrayMap<View, TransitionValues> arrayMap2, ArrayMap<String, View> arrayMap3, ArrayMap<String, View> arrayMap4) {
View view;
int size = arrayMap3.size();
for (int i = 0; i < size; i++) {
View valueAt = arrayMap3.valueAt(i);
if (valueAt != null && isValidTarget(valueAt) && (view = arrayMap4.get(arrayMap3.keyAt(i))) != null && isValidTarget(view)) {
TransitionValues transitionValues = arrayMap.get(valueAt);
TransitionValues transitionValues2 = arrayMap2.get(view);
if (!(transitionValues == null || transitionValues2 == null)) {
this.mStartValuesList.add(transitionValues);
this.mEndValuesList.add(transitionValues2);
arrayMap.remove(valueAt);
arrayMap2.remove(view);
}
}
}
}
private void matchStartAndEnd(TransitionValuesMaps transitionValuesMaps, TransitionValuesMaps transitionValuesMaps2) {
ArrayMap<View, TransitionValues> arrayMap = new ArrayMap<>(transitionValuesMaps.mViewValues);
ArrayMap<View, TransitionValues> arrayMap2 = new ArrayMap<>(transitionValuesMaps2.mViewValues);
int i = 0;
while (true) {
int[] iArr = this.mMatchOrder;
if (i < iArr.length) {
int i2 = iArr[i];
if (i2 == 1) {
matchInstances(arrayMap, arrayMap2);
} else if (i2 == 2) {
matchNames(arrayMap, arrayMap2, transitionValuesMaps.mNameValues, transitionValuesMaps2.mNameValues);
} else if (i2 == 3) {
matchIds(arrayMap, arrayMap2, transitionValuesMaps.mIdValues, transitionValuesMaps2.mIdValues);
} else if (i2 == 4) {
matchItemIds(arrayMap, arrayMap2, transitionValuesMaps.mItemIdValues, transitionValuesMaps2.mItemIdValues);
}
i++;
} else {
addUnmatched(arrayMap, arrayMap2);
return;
}
}
}
private static int[] parseMatchOrder(String str) {
StringTokenizer stringTokenizer = new StringTokenizer(str, ",");
int[] iArr = new int[stringTokenizer.countTokens()];
int i = 0;
while (stringTokenizer.hasMoreTokens()) {
String trim = stringTokenizer.nextToken().trim();
if ("id".equalsIgnoreCase(trim)) {
iArr[i] = 3;
} else if ("instance".equalsIgnoreCase(trim)) {
iArr[i] = 1;
} else if ("name".equalsIgnoreCase(trim)) {
iArr[i] = 2;
} else if ("itemId".equalsIgnoreCase(trim)) {
iArr[i] = 4;
} else if (trim.isEmpty()) {
int[] iArr2 = new int[(iArr.length - 1)];
System.arraycopy(iArr, 0, iArr2, 0, i);
i--;
iArr = iArr2;
} else {
throw new InflateException(a.u("Unknown match type in matchOrder: '", trim, "'"));
}
i++;
}
return iArr;
}
private void runAnimator(Animator animator, ArrayMap<Animator, AnimationInfo> arrayMap) {
if (animator != null) {
animator.addListener(new AnonymousClass2(arrayMap));
animate(animator);
}
}
@NonNull
public Transition addListener(@NonNull TransitionListener transitionListener) {
if (this.mListeners == null) {
this.mListeners = new ArrayList<>();
}
this.mListeners.add(transitionListener);
return this;
}
@NonNull
public Transition addTarget(@IdRes int i) {
if (i != 0) {
this.mTargetIds.add(Integer.valueOf(i));
}
return this;
}
@NonNull
public Transition addTarget(@NonNull View view) {
this.mTargets.add(view);
return this;
}
@NonNull
public Transition addTarget(@NonNull Class<?> cls) {
if (this.mTargetTypes == null) {
this.mTargetTypes = new ArrayList<>();
}
this.mTargetTypes.add(cls);
return this;
}
@NonNull
public Transition addTarget(@NonNull String str) {
if (this.mTargetNames == null) {
this.mTargetNames = new ArrayList<>();
}
this.mTargetNames.add(str);
return this;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void animate(Animator animator) {
if (animator == null) {
end();
return;
}
if (getDuration() >= 0) {
animator.setDuration(getDuration());
}
if (getStartDelay() >= 0) {
animator.setStartDelay(animator.getStartDelay() + getStartDelay());
}
if (getInterpolator() != null) {
animator.setInterpolator(getInterpolator());
}
animator.addListener(new AnonymousClass3());
animator.start();
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void cancel() {
for (int size = this.mCurrentAnimators.size() - 1; size >= 0; size--) {
this.mCurrentAnimators.get(size).cancel();
}
ArrayList<TransitionListener> arrayList = this.mListeners;
if (arrayList != null && arrayList.size() > 0) {
ArrayList arrayList2 = (ArrayList) this.mListeners.clone();
int size2 = arrayList2.size();
for (int i = 0; i < size2; i++) {
((TransitionListener) arrayList2.get(i)).onTransitionCancel(this);
}
}
}
public abstract void captureEndValues(@NonNull TransitionValues transitionValues);
public void capturePropagationValues(TransitionValues transitionValues) {
String[] propagationProperties;
if (this.mPropagation != null && !transitionValues.values.isEmpty() && (propagationProperties = this.mPropagation.getPropagationProperties()) != null) {
boolean z2 = false;
int i = 0;
while (true) {
if (i >= propagationProperties.length) {
z2 = true;
break;
} else if (!transitionValues.values.containsKey(propagationProperties[i])) {
break;
} else {
i++;
}
}
if (!z2) {
this.mPropagation.captureValues(transitionValues);
}
}
}
public abstract void captureStartValues(@NonNull TransitionValues transitionValues);
public void captureValues(ViewGroup viewGroup, boolean z2) {
ArrayMap<String, String> arrayMap;
ArrayList<String> arrayList;
ArrayList<Class<?>> arrayList2;
clearValues(z2);
if ((this.mTargetIds.size() > 0 || this.mTargets.size() > 0) && (((arrayList = this.mTargetNames) == null || arrayList.isEmpty()) && ((arrayList2 = this.mTargetTypes) == null || arrayList2.isEmpty()))) {
for (int i = 0; i < this.mTargetIds.size(); i++) {
View findViewById = viewGroup.findViewById(this.mTargetIds.get(i).intValue());
if (findViewById != null) {
TransitionValues transitionValues = new TransitionValues(findViewById);
if (z2) {
captureStartValues(transitionValues);
} else {
captureEndValues(transitionValues);
}
transitionValues.mTargetedTransitions.add(this);
capturePropagationValues(transitionValues);
if (z2) {
addViewValues(this.mStartValues, findViewById, transitionValues);
} else {
addViewValues(this.mEndValues, findViewById, transitionValues);
}
}
}
for (int i2 = 0; i2 < this.mTargets.size(); i2++) {
View view = this.mTargets.get(i2);
TransitionValues transitionValues2 = new TransitionValues(view);
if (z2) {
captureStartValues(transitionValues2);
} else {
captureEndValues(transitionValues2);
}
transitionValues2.mTargetedTransitions.add(this);
capturePropagationValues(transitionValues2);
if (z2) {
addViewValues(this.mStartValues, view, transitionValues2);
} else {
addViewValues(this.mEndValues, view, transitionValues2);
}
}
} else {
captureHierarchy(viewGroup, z2);
}
if (!(z2 || (arrayMap = this.mNameOverrides) == null)) {
int size = arrayMap.size();
ArrayList arrayList3 = new ArrayList(size);
for (int i3 = 0; i3 < size; i3++) {
arrayList3.add(this.mStartValues.mNameValues.remove(this.mNameOverrides.keyAt(i3)));
}
for (int i4 = 0; i4 < size; i4++) {
View view2 = (View) arrayList3.get(i4);
if (view2 != null) {
this.mStartValues.mNameValues.put(this.mNameOverrides.valueAt(i4), view2);
}
}
}
}
public void clearValues(boolean z2) {
if (z2) {
this.mStartValues.mViewValues.clear();
this.mStartValues.mIdValues.clear();
this.mStartValues.mItemIdValues.clear();
return;
}
this.mEndValues.mViewValues.clear();
this.mEndValues.mIdValues.clear();
this.mEndValues.mItemIdValues.clear();
}
@Override // java.lang.Object
public Transition clone() {
try {
Transition transition = (Transition) super.clone();
transition.mAnimators = new ArrayList<>();
transition.mStartValues = new TransitionValuesMaps();
transition.mEndValues = new TransitionValuesMaps();
transition.mStartValuesList = null;
transition.mEndValuesList = null;
return transition;
} catch (CloneNotSupportedException unused) {
return null;
}
}
@Nullable
public Animator createAnimator(@NonNull ViewGroup viewGroup, @Nullable TransitionValues transitionValues, @Nullable TransitionValues transitionValues2) {
return null;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void createAnimators(ViewGroup viewGroup, TransitionValuesMaps transitionValuesMaps, TransitionValuesMaps transitionValuesMaps2, ArrayList<TransitionValues> arrayList, ArrayList<TransitionValues> arrayList2) {
int i;
int i2;
Animator createAnimator;
View view;
Animator animator;
TransitionValues transitionValues;
TransitionValues transitionValues2;
Animator animator2;
ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
SparseIntArray sparseIntArray = new SparseIntArray();
int size = arrayList.size();
long j = Long.MAX_VALUE;
int i3 = 0;
while (i3 < size) {
TransitionValues transitionValues3 = arrayList.get(i3);
TransitionValues transitionValues4 = arrayList2.get(i3);
if (transitionValues3 != null && !transitionValues3.mTargetedTransitions.contains(this)) {
transitionValues3 = null;
}
if (transitionValues4 != null && !transitionValues4.mTargetedTransitions.contains(this)) {
transitionValues4 = null;
}
if (!(transitionValues3 == null && transitionValues4 == null)) {
if ((transitionValues3 == null || transitionValues4 == null || isTransitionRequired(transitionValues3, transitionValues4)) && (createAnimator = createAnimator(viewGroup, transitionValues3, transitionValues4)) != null) {
if (transitionValues4 != null) {
view = transitionValues4.view;
String[] transitionProperties = getTransitionProperties();
if (transitionProperties != null && transitionProperties.length > 0) {
transitionValues2 = new TransitionValues(view);
i2 = size;
TransitionValues transitionValues5 = transitionValuesMaps2.mViewValues.get(view);
if (transitionValues5 != null) {
int i4 = 0;
while (i4 < transitionProperties.length) {
transitionValues2.values.put(transitionProperties[i4], transitionValues5.values.get(transitionProperties[i4]));
i4++;
i3 = i3;
transitionValues5 = transitionValues5;
}
}
i = i3;
int size2 = runningAnimators.size();
int i5 = 0;
while (true) {
if (i5 >= size2) {
animator2 = createAnimator;
break;
}
AnimationInfo animationInfo = runningAnimators.get(runningAnimators.keyAt(i5));
if (animationInfo.mValues != null && animationInfo.mView == view && animationInfo.mName.equals(getName()) && animationInfo.mValues.equals(transitionValues2)) {
animator2 = null;
break;
}
i5++;
}
} else {
i2 = size;
i = i3;
animator2 = createAnimator;
transitionValues2 = null;
}
animator = animator2;
transitionValues = transitionValues2;
} else {
i2 = size;
i = i3;
view = transitionValues3.view;
animator = createAnimator;
transitionValues = null;
}
if (animator != null) {
TransitionPropagation transitionPropagation = this.mPropagation;
if (transitionPropagation != null) {
long startDelay = transitionPropagation.getStartDelay(viewGroup, this, transitionValues3, transitionValues4);
sparseIntArray.put(this.mAnimators.size(), (int) startDelay);
j = Math.min(startDelay, j);
}
runningAnimators.put(animator, new AnimationInfo(view, getName(), this, ViewUtils.getWindowId(viewGroup), transitionValues));
this.mAnimators.add(animator);
j = j;
}
i3 = i + 1;
size = i2;
}
}
i2 = size;
i = i3;
i3 = i + 1;
size = i2;
}
if (sparseIntArray.size() != 0) {
for (int i6 = 0; i6 < sparseIntArray.size(); i6++) {
Animator animator3 = this.mAnimators.get(sparseIntArray.keyAt(i6));
animator3.setStartDelay(animator3.getStartDelay() + (((long) sparseIntArray.valueAt(i6)) - j));
}
}
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void end() {
int i = this.mNumInstances - 1;
this.mNumInstances = i;
if (i == 0) {
ArrayList<TransitionListener> arrayList = this.mListeners;
if (arrayList != null && arrayList.size() > 0) {
ArrayList arrayList2 = (ArrayList) this.mListeners.clone();
int size = arrayList2.size();
for (int i2 = 0; i2 < size; i2++) {
((TransitionListener) arrayList2.get(i2)).onTransitionEnd(this);
}
}
for (int i3 = 0; i3 < this.mStartValues.mItemIdValues.size(); i3++) {
View valueAt = this.mStartValues.mItemIdValues.valueAt(i3);
if (valueAt != null) {
ViewCompat.setHasTransientState(valueAt, false);
}
}
for (int i4 = 0; i4 < this.mEndValues.mItemIdValues.size(); i4++) {
View valueAt2 = this.mEndValues.mItemIdValues.valueAt(i4);
if (valueAt2 != null) {
ViewCompat.setHasTransientState(valueAt2, false);
}
}
this.mEnded = true;
}
}
@NonNull
public Transition excludeChildren(@IdRes int i, boolean z2) {
this.mTargetIdChildExcludes = excludeId(this.mTargetIdChildExcludes, i, z2);
return this;
}
@NonNull
public Transition excludeChildren(@NonNull View view, boolean z2) {
this.mTargetChildExcludes = excludeView(this.mTargetChildExcludes, view, z2);
return this;
}
@NonNull
public Transition excludeChildren(@NonNull Class<?> cls, boolean z2) {
this.mTargetTypeChildExcludes = excludeType(this.mTargetTypeChildExcludes, cls, z2);
return this;
}
@NonNull
public Transition excludeTarget(@IdRes int i, boolean z2) {
this.mTargetIdExcludes = excludeId(this.mTargetIdExcludes, i, z2);
return this;
}
@NonNull
public Transition excludeTarget(@NonNull View view, boolean z2) {
this.mTargetExcludes = excludeView(this.mTargetExcludes, view, z2);
return this;
}
@NonNull
public Transition excludeTarget(@NonNull Class<?> cls, boolean z2) {
this.mTargetTypeExcludes = excludeType(this.mTargetTypeExcludes, cls, z2);
return this;
}
@NonNull
public Transition excludeTarget(@NonNull String str, boolean z2) {
this.mTargetNameExcludes = excludeObject(this.mTargetNameExcludes, str, z2);
return this;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void forceToEnd(ViewGroup viewGroup) {
ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
int size = runningAnimators.size();
if (!(viewGroup == null || size == 0)) {
WindowIdImpl windowId = ViewUtils.getWindowId(viewGroup);
ArrayMap arrayMap = new ArrayMap(runningAnimators);
runningAnimators.clear();
for (int i = size - 1; i >= 0; i--) {
AnimationInfo valueAt = arrayMap.valueAt(i);
if (!(valueAt.mView == null || windowId == null || !windowId.equals(valueAt.mWindowId))) {
arrayMap.keyAt(i).end();
}
}
}
}
public long getDuration() {
return this.mDuration;
}
@Nullable
public Rect getEpicenter() {
EpicenterCallback epicenterCallback = this.mEpicenterCallback;
if (epicenterCallback == null) {
return null;
}
return epicenterCallback.onGetEpicenter(this);
}
@Nullable
public EpicenterCallback getEpicenterCallback() {
return this.mEpicenterCallback;
}
@Nullable
public TimeInterpolator getInterpolator() {
return this.mInterpolator;
}
public TransitionValues getMatchedTransitionValues(View view, boolean z2) {
TransitionSet transitionSet = this.mParent;
if (transitionSet != null) {
return transitionSet.getMatchedTransitionValues(view, z2);
}
ArrayList<TransitionValues> arrayList = z2 ? this.mStartValuesList : this.mEndValuesList;
if (arrayList == null) {
return null;
}
int size = arrayList.size();
int i = -1;
int i2 = 0;
while (true) {
if (i2 >= size) {
break;
}
TransitionValues transitionValues = arrayList.get(i2);
if (transitionValues == null) {
return null;
}
if (transitionValues.view == view) {
i = i2;
break;
}
i2++;
}
if (i < 0) {
return null;
}
return (z2 ? this.mEndValuesList : this.mStartValuesList).get(i);
}
@NonNull
public String getName() {
return this.mName;
}
@NonNull
public PathMotion getPathMotion() {
return this.mPathMotion;
}
@Nullable
public TransitionPropagation getPropagation() {
return this.mPropagation;
}
public long getStartDelay() {
return this.mStartDelay;
}
@NonNull
public List<Integer> getTargetIds() {
return this.mTargetIds;
}
@Nullable
public List<String> getTargetNames() {
return this.mTargetNames;
}
@Nullable
public List<Class<?>> getTargetTypes() {
return this.mTargetTypes;
}
@NonNull
public List<View> getTargets() {
return this.mTargets;
}
@Nullable
public String[] getTransitionProperties() {
return null;
}
@Nullable
public TransitionValues getTransitionValues(@NonNull View view, boolean z2) {
TransitionSet transitionSet = this.mParent;
if (transitionSet != null) {
return transitionSet.getTransitionValues(view, z2);
}
return (z2 ? this.mStartValues : this.mEndValues).mViewValues.get(view);
}
public boolean isTransitionRequired(@Nullable TransitionValues transitionValues, @Nullable TransitionValues transitionValues2) {
if (transitionValues == null || transitionValues2 == null) {
return false;
}
String[] transitionProperties = getTransitionProperties();
if (transitionProperties != null) {
for (String str : transitionProperties) {
if (!isValueChanged(transitionValues, transitionValues2, str)) {
}
}
return false;
}
for (String str2 : transitionValues.values.keySet()) {
if (isValueChanged(transitionValues, transitionValues2, str2)) {
}
}
return false;
return true;
}
public boolean isValidTarget(View view) {
ArrayList<Class<?>> arrayList;
ArrayList<String> arrayList2;
int id2 = view.getId();
ArrayList<Integer> arrayList3 = this.mTargetIdExcludes;
if (arrayList3 != null && arrayList3.contains(Integer.valueOf(id2))) {
return false;
}
ArrayList<View> arrayList4 = this.mTargetExcludes;
if (arrayList4 != null && arrayList4.contains(view)) {
return false;
}
ArrayList<Class<?>> arrayList5 = this.mTargetTypeExcludes;
if (arrayList5 != null) {
int size = arrayList5.size();
for (int i = 0; i < size; i++) {
if (this.mTargetTypeExcludes.get(i).isInstance(view)) {
return false;
}
}
}
if (!(this.mTargetNameExcludes == null || ViewCompat.getTransitionName(view) == null || !this.mTargetNameExcludes.contains(ViewCompat.getTransitionName(view)))) {
return false;
}
if ((this.mTargetIds.size() == 0 && this.mTargets.size() == 0 && (((arrayList = this.mTargetTypes) == null || arrayList.isEmpty()) && ((arrayList2 = this.mTargetNames) == null || arrayList2.isEmpty()))) || this.mTargetIds.contains(Integer.valueOf(id2)) || this.mTargets.contains(view)) {
return true;
}
ArrayList<String> arrayList6 = this.mTargetNames;
if (arrayList6 != null && arrayList6.contains(ViewCompat.getTransitionName(view))) {
return true;
}
if (this.mTargetTypes != null) {
for (int i2 = 0; i2 < this.mTargetTypes.size(); i2++) {
if (this.mTargetTypes.get(i2).isInstance(view)) {
return true;
}
}
}
return false;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void pause(View view) {
if (!this.mEnded) {
ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
int size = runningAnimators.size();
WindowIdImpl windowId = ViewUtils.getWindowId(view);
for (int i = size - 1; i >= 0; i--) {
AnimationInfo valueAt = runningAnimators.valueAt(i);
if (valueAt.mView != null && windowId.equals(valueAt.mWindowId)) {
AnimatorUtils.pause(runningAnimators.keyAt(i));
}
}
ArrayList<TransitionListener> arrayList = this.mListeners;
if (arrayList != null && arrayList.size() > 0) {
ArrayList arrayList2 = (ArrayList) this.mListeners.clone();
int size2 = arrayList2.size();
for (int i2 = 0; i2 < size2; i2++) {
((TransitionListener) arrayList2.get(i2)).onTransitionPause(this);
}
}
this.mPaused = true;
}
}
public void playTransition(ViewGroup viewGroup) {
AnimationInfo animationInfo;
this.mStartValuesList = new ArrayList<>();
this.mEndValuesList = new ArrayList<>();
matchStartAndEnd(this.mStartValues, this.mEndValues);
ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
int size = runningAnimators.size();
WindowIdImpl windowId = ViewUtils.getWindowId(viewGroup);
for (int i = size - 1; i >= 0; i--) {
Animator keyAt = runningAnimators.keyAt(i);
if (!(keyAt == null || (animationInfo = runningAnimators.get(keyAt)) == null || animationInfo.mView == null || !windowId.equals(animationInfo.mWindowId))) {
TransitionValues transitionValues = animationInfo.mValues;
View view = animationInfo.mView;
TransitionValues transitionValues2 = getTransitionValues(view, true);
TransitionValues matchedTransitionValues = getMatchedTransitionValues(view, true);
if (transitionValues2 == null && matchedTransitionValues == null) {
matchedTransitionValues = this.mEndValues.mViewValues.get(view);
}
if (!(transitionValues2 == null && matchedTransitionValues == null) && animationInfo.mTransition.isTransitionRequired(transitionValues, matchedTransitionValues)) {
if (keyAt.isRunning() || keyAt.isStarted()) {
keyAt.cancel();
} else {
runningAnimators.remove(keyAt);
}
}
}
}
createAnimators(viewGroup, this.mStartValues, this.mEndValues, this.mStartValuesList, this.mEndValuesList);
runAnimators();
}
@NonNull
public Transition removeListener(@NonNull TransitionListener transitionListener) {
ArrayList<TransitionListener> arrayList = this.mListeners;
if (arrayList == null) {
return this;
}
arrayList.remove(transitionListener);
if (this.mListeners.size() == 0) {
this.mListeners = null;
}
return this;
}
@NonNull
public Transition removeTarget(@IdRes int i) {
if (i != 0) {
this.mTargetIds.remove(Integer.valueOf(i));
}
return this;
}
@NonNull
public Transition removeTarget(@NonNull View view) {
this.mTargets.remove(view);
return this;
}
@NonNull
public Transition removeTarget(@NonNull Class<?> cls) {
ArrayList<Class<?>> arrayList = this.mTargetTypes;
if (arrayList != null) {
arrayList.remove(cls);
}
return this;
}
@NonNull
public Transition removeTarget(@NonNull String str) {
ArrayList<String> arrayList = this.mTargetNames;
if (arrayList != null) {
arrayList.remove(str);
}
return this;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void resume(View view) {
if (this.mPaused) {
if (!this.mEnded) {
ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
int size = runningAnimators.size();
WindowIdImpl windowId = ViewUtils.getWindowId(view);
for (int i = size - 1; i >= 0; i--) {
AnimationInfo valueAt = runningAnimators.valueAt(i);
if (valueAt.mView != null && windowId.equals(valueAt.mWindowId)) {
AnimatorUtils.resume(runningAnimators.keyAt(i));
}
}
ArrayList<TransitionListener> arrayList = this.mListeners;
if (arrayList != null && arrayList.size() > 0) {
ArrayList arrayList2 = (ArrayList) this.mListeners.clone();
int size2 = arrayList2.size();
for (int i2 = 0; i2 < size2; i2++) {
((TransitionListener) arrayList2.get(i2)).onTransitionResume(this);
}
}
}
this.mPaused = false;
}
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void runAnimators() {
start();
ArrayMap<Animator, AnimationInfo> runningAnimators = getRunningAnimators();
Iterator<Animator> it = this.mAnimators.iterator();
while (it.hasNext()) {
Animator next = it.next();
if (runningAnimators.containsKey(next)) {
start();
runAnimator(next, runningAnimators);
}
}
this.mAnimators.clear();
end();
}
public void setCanRemoveViews(boolean z2) {
this.mCanRemoveViews = z2;
}
@NonNull
public Transition setDuration(long j) {
this.mDuration = j;
return this;
}
public void setEpicenterCallback(@Nullable EpicenterCallback epicenterCallback) {
this.mEpicenterCallback = epicenterCallback;
}
@NonNull
public Transition setInterpolator(@Nullable TimeInterpolator timeInterpolator) {
this.mInterpolator = timeInterpolator;
return this;
}
public void setMatchOrder(int... iArr) {
if (iArr == null || iArr.length == 0) {
this.mMatchOrder = DEFAULT_MATCH_ORDER;
return;
}
for (int i = 0; i < iArr.length; i++) {
if (!isValidMatch(iArr[i])) {
throw new IllegalArgumentException("matches contains invalid value");
} else if (alreadyContains(iArr, i)) {
throw new IllegalArgumentException("matches contains a duplicate value");
}
}
this.mMatchOrder = (int[]) iArr.clone();
}
public void setPathMotion(@Nullable PathMotion pathMotion) {
if (pathMotion == null) {
this.mPathMotion = STRAIGHT_PATH_MOTION;
} else {
this.mPathMotion = pathMotion;
}
}
public void setPropagation(@Nullable TransitionPropagation transitionPropagation) {
this.mPropagation = transitionPropagation;
}
public Transition setSceneRoot(ViewGroup viewGroup) {
this.mSceneRoot = viewGroup;
return this;
}
@NonNull
public Transition setStartDelay(long j) {
this.mStartDelay = j;
return this;
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public void start() {
if (this.mNumInstances == 0) {
ArrayList<TransitionListener> arrayList = this.mListeners;
if (arrayList != null && arrayList.size() > 0) {
ArrayList arrayList2 = (ArrayList) this.mListeners.clone();
int size = arrayList2.size();
for (int i = 0; i < size; i++) {
((TransitionListener) arrayList2.get(i)).onTransitionStart(this);
}
}
this.mEnded = false;
}
this.mNumInstances++;
}
@Override // java.lang.Object
public String toString() {
return toString("");
}
public String toString(String str) {
StringBuilder L = a.L(str);
L.append(getClass().getSimpleName());
L.append("@");
L.append(Integer.toHexString(hashCode()));
L.append(": ");
String sb = L.toString();
if (this.mDuration != -1) {
sb = a.z(a.P(sb, "dur("), this.mDuration, ") ");
}
if (this.mStartDelay != -1) {
sb = a.z(a.P(sb, "dly("), this.mStartDelay, ") ");
}
if (this.mInterpolator != null) {
StringBuilder P = a.P(sb, "interp(");
P.append(this.mInterpolator);
P.append(") ");
sb = P.toString();
}
if (this.mTargetIds.size() <= 0 && this.mTargets.size() <= 0) {
return sb;
}
String t = a.t(sb, "tgts(");
if (this.mTargetIds.size() > 0) {
for (int i = 0; i < this.mTargetIds.size(); i++) {
if (i > 0) {
t = a.t(t, ", ");
}
StringBuilder L2 = a.L(t);
L2.append(this.mTargetIds.get(i));
t = L2.toString();
}
}
if (this.mTargets.size() > 0) {
for (int i2 = 0; i2 < this.mTargets.size(); i2++) {
if (i2 > 0) {
t = a.t(t, ", ");
}
StringBuilder L3 = a.L(t);
L3.append(this.mTargets.get(i2));
t = L3.toString();
}
}
return a.t(t, ")");
}
}