mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
139 lines
5.1 KiB
Java
139 lines
5.1 KiB
Java
package com.google.android.material.animation;
|
|
|
|
import android.animation.Animator;
|
|
import android.animation.AnimatorInflater;
|
|
import android.animation.AnimatorSet;
|
|
import android.animation.ObjectAnimator;
|
|
import android.animation.PropertyValuesHolder;
|
|
import android.content.Context;
|
|
import android.content.res.TypedArray;
|
|
import android.util.Log;
|
|
import android.util.Property;
|
|
import androidx.collection.SimpleArrayMap;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class MotionSpec {
|
|
private static final String TAG = "MotionSpec";
|
|
private final SimpleArrayMap<String, MotionTiming> timings = new SimpleArrayMap<>();
|
|
private final SimpleArrayMap<String, PropertyValuesHolder[]> propertyValues = new SimpleArrayMap<>();
|
|
|
|
public boolean hasTiming(String str) {
|
|
return this.timings.get(str) != null;
|
|
}
|
|
|
|
public MotionTiming getTiming(String str) {
|
|
if (!hasTiming(str)) {
|
|
throw new IllegalArgumentException();
|
|
}
|
|
return this.timings.get(str);
|
|
}
|
|
|
|
public void setTiming(String str, MotionTiming motionTiming) {
|
|
this.timings.put(str, motionTiming);
|
|
}
|
|
|
|
public boolean hasPropertyValues(String str) {
|
|
return this.propertyValues.get(str) != null;
|
|
}
|
|
|
|
public PropertyValuesHolder[] getPropertyValues(String str) {
|
|
if (!hasPropertyValues(str)) {
|
|
throw new IllegalArgumentException();
|
|
}
|
|
return clonePropertyValuesHolder(this.propertyValues.get(str));
|
|
}
|
|
|
|
public void setPropertyValues(String str, PropertyValuesHolder[] propertyValuesHolderArr) {
|
|
this.propertyValues.put(str, propertyValuesHolderArr);
|
|
}
|
|
|
|
private PropertyValuesHolder[] clonePropertyValuesHolder(PropertyValuesHolder[] propertyValuesHolderArr) {
|
|
PropertyValuesHolder[] propertyValuesHolderArr2 = new PropertyValuesHolder[propertyValuesHolderArr.length];
|
|
for (int i = 0; i < propertyValuesHolderArr.length; i++) {
|
|
propertyValuesHolderArr2[i] = propertyValuesHolderArr[i].clone();
|
|
}
|
|
return propertyValuesHolderArr2;
|
|
}
|
|
|
|
public <T> ObjectAnimator getAnimator(String str, T t, Property<T, ?> property) {
|
|
ObjectAnimator ofPropertyValuesHolder = ObjectAnimator.ofPropertyValuesHolder(t, getPropertyValues(str));
|
|
ofPropertyValuesHolder.setProperty(property);
|
|
getTiming(str).apply(ofPropertyValuesHolder);
|
|
return ofPropertyValuesHolder;
|
|
}
|
|
|
|
public long getTotalDuration() {
|
|
int size = this.timings.getSize();
|
|
long j = 0;
|
|
for (int i = 0; i < size; i++) {
|
|
MotionTiming valueAt = this.timings.valueAt(i);
|
|
j = Math.max(j, valueAt.getDelay() + valueAt.getDuration());
|
|
}
|
|
return j;
|
|
}
|
|
|
|
public static MotionSpec createFromAttribute(Context context, TypedArray typedArray, int i) {
|
|
int resourceId;
|
|
if (!typedArray.hasValue(i) || (resourceId = typedArray.getResourceId(i, 0)) == 0) {
|
|
return null;
|
|
}
|
|
return createFromResource(context, resourceId);
|
|
}
|
|
|
|
public static MotionSpec createFromResource(Context context, int i) {
|
|
try {
|
|
Animator loadAnimator = AnimatorInflater.loadAnimator(context, i);
|
|
if (loadAnimator instanceof AnimatorSet) {
|
|
return createSpecFromAnimators(((AnimatorSet) loadAnimator).getChildAnimations());
|
|
}
|
|
if (loadAnimator == null) {
|
|
return null;
|
|
}
|
|
ArrayList arrayList = new ArrayList();
|
|
arrayList.add(loadAnimator);
|
|
return createSpecFromAnimators(arrayList);
|
|
} catch (Exception e) {
|
|
Log.w(TAG, "Can't load animation resource ID #0x" + Integer.toHexString(i), e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static MotionSpec createSpecFromAnimators(List<Animator> list) {
|
|
MotionSpec motionSpec = new MotionSpec();
|
|
int size = list.size();
|
|
for (int i = 0; i < size; i++) {
|
|
addInfoFromAnimator(motionSpec, list.get(i));
|
|
}
|
|
return motionSpec;
|
|
}
|
|
|
|
private static void addInfoFromAnimator(MotionSpec motionSpec, Animator animator) {
|
|
if (animator instanceof ObjectAnimator) {
|
|
ObjectAnimator objectAnimator = (ObjectAnimator) animator;
|
|
motionSpec.setPropertyValues(objectAnimator.getPropertyName(), objectAnimator.getValues());
|
|
motionSpec.setTiming(objectAnimator.getPropertyName(), MotionTiming.createFromAnimator(objectAnimator));
|
|
return;
|
|
}
|
|
throw new IllegalArgumentException("Animator must be an ObjectAnimator: " + animator);
|
|
}
|
|
|
|
public boolean equals(Object obj) {
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (obj instanceof MotionSpec) {
|
|
return this.timings.equals(((MotionSpec) obj).timings);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public int hashCode() {
|
|
return this.timings.hashCode();
|
|
}
|
|
|
|
public String toString() {
|
|
return "\n" + getClass().getName() + '{' + Integer.toHexString(System.identityHashCode(this)) + " timings: " + this.timings + "}\n";
|
|
}
|
|
}
|