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> sRunningAnimators = new ThreadLocal<>(); private ArrayList mAnimators = new ArrayList<>(); public boolean mCanRemoveViews = false; public ArrayList mCurrentAnimators = new ArrayList<>(); public long mDuration = -1; private TransitionValuesMaps mEndValues = new TransitionValuesMaps(); private ArrayList mEndValuesList; private boolean mEnded = false; private EpicenterCallback mEpicenterCallback; private TimeInterpolator mInterpolator = null; private ArrayList mListeners = null; private int[] mMatchOrder = DEFAULT_MATCH_ORDER; private String mName = getClass().getName(); private ArrayMap 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 mStartValuesList; private ArrayList mTargetChildExcludes = null; private ArrayList mTargetExcludes = null; private ArrayList mTargetIdChildExcludes = null; private ArrayList mTargetIdExcludes = null; public ArrayList mTargetIds = new ArrayList<>(); private ArrayList mTargetNameExcludes = null; private ArrayList mTargetNames = null; private ArrayList> mTargetTypeChildExcludes = null; private ArrayList> mTargetTypeExcludes = null; private ArrayList> mTargetTypes = null; public ArrayList 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 ArrayList add(ArrayList arrayList, T t) { if (arrayList == null) { arrayList = new ArrayList<>(); } if (!arrayList.contains(t)) { arrayList.add(t); } return arrayList; } public static ArrayList remove(ArrayList 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 arrayMap, ArrayMap 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 arrayList = this.mTargetIdExcludes; if (arrayList == null || !arrayList.contains(Integer.valueOf(id2))) { ArrayList arrayList2 = this.mTargetExcludes; if (arrayList2 == null || !arrayList2.contains(view)) { ArrayList> 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 arrayList4 = this.mTargetIdChildExcludes; if (arrayList4 == null || !arrayList4.contains(Integer.valueOf(id2))) { ArrayList arrayList5 = this.mTargetChildExcludes; if (arrayList5 == null || !arrayList5.contains(view)) { ArrayList> 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 excludeId(ArrayList arrayList, int i, boolean z2) { return i > 0 ? z2 ? ArrayListManager.add(arrayList, Integer.valueOf(i)) : ArrayListManager.remove(arrayList, Integer.valueOf(i)) : arrayList; } private static ArrayList excludeObject(ArrayList arrayList, T t, boolean z2) { return t != null ? z2 ? ArrayListManager.add(arrayList, t) : ArrayListManager.remove(arrayList, t) : arrayList; } private ArrayList> excludeType(ArrayList> arrayList, Class cls, boolean z2) { return cls != null ? z2 ? ArrayListManager.add(arrayList, cls) : ArrayListManager.remove(arrayList, cls) : arrayList; } private ArrayList excludeView(ArrayList arrayList, View view, boolean z2) { return view != null ? z2 ? ArrayListManager.add(arrayList, view) : ArrayListManager.remove(arrayList, view) : arrayList; } private static ArrayMap getRunningAnimators() { ArrayMap arrayMap = sRunningAnimators.get(); if (arrayMap != null) { return arrayMap; } ArrayMap 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 arrayMap, ArrayMap arrayMap2, SparseArray sparseArray, SparseArray 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 arrayMap, ArrayMap 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 arrayMap, ArrayMap arrayMap2, LongSparseArray longSparseArray, LongSparseArray 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 arrayMap, ArrayMap arrayMap2, ArrayMap arrayMap3, ArrayMap 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 arrayMap = new ArrayMap<>(transitionValuesMaps.mViewValues); ArrayMap 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 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 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 arrayMap; ArrayList arrayList; ArrayList> 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 arrayList, ArrayList arrayList2) { int i; int i2; Animator createAnimator; View view; Animator animator; TransitionValues transitionValues; TransitionValues transitionValues2; Animator animator2; ArrayMap 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 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 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 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 getTargetIds() { return this.mTargetIds; } @Nullable public List getTargetNames() { return this.mTargetNames; } @Nullable public List> getTargetTypes() { return this.mTargetTypes; } @NonNull public List 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> arrayList; ArrayList arrayList2; int id2 = view.getId(); ArrayList arrayList3 = this.mTargetIdExcludes; if (arrayList3 != null && arrayList3.contains(Integer.valueOf(id2))) { return false; } ArrayList arrayList4 = this.mTargetExcludes; if (arrayList4 != null && arrayList4.contains(view)) { return false; } ArrayList> 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 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 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 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 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 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> arrayList = this.mTargetTypes; if (arrayList != null) { arrayList.remove(cls); } return this; } @NonNull public Transition removeTarget(@NonNull String str) { ArrayList 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 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 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 runningAnimators = getRunningAnimators(); Iterator 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 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, ")"); } }