ADD week 5
This commit is contained in:
@ -0,0 +1,141 @@
|
||||
package androidx.constraintlayout.motion.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.util.Xml;
|
||||
import androidx.constraintlayout.core.motion.utils.TypedValues;
|
||||
import androidx.constraintlayout.widget.ConstraintAttribute;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class KeyFrames {
|
||||
private static final String CUSTOM_ATTRIBUTE = "CustomAttribute";
|
||||
private static final String CUSTOM_METHOD = "CustomMethod";
|
||||
private static final String TAG = "KeyFrames";
|
||||
public static final int UNSET = -1;
|
||||
static HashMap<String, Constructor<? extends Key>> sKeyMakers;
|
||||
private HashMap<Integer, ArrayList<Key>> mFramesMap = new HashMap<>();
|
||||
|
||||
static {
|
||||
HashMap<String, Constructor<? extends Key>> hashMap = new HashMap<>();
|
||||
sKeyMakers = hashMap;
|
||||
try {
|
||||
hashMap.put("KeyAttribute", KeyAttributes.class.getConstructor(new Class[0]));
|
||||
sKeyMakers.put(TypedValues.PositionType.NAME, KeyPosition.class.getConstructor(new Class[0]));
|
||||
sKeyMakers.put(TypedValues.CycleType.NAME, KeyCycle.class.getConstructor(new Class[0]));
|
||||
sKeyMakers.put("KeyTimeCycle", KeyTimeCycle.class.getConstructor(new Class[0]));
|
||||
sKeyMakers.put(TypedValues.TriggerType.NAME, KeyTrigger.class.getConstructor(new Class[0]));
|
||||
} catch (NoSuchMethodException e) {
|
||||
Log.e(TAG, "unable to load", e);
|
||||
}
|
||||
}
|
||||
|
||||
public void addKey(Key key) {
|
||||
if (!this.mFramesMap.containsKey(Integer.valueOf(key.mTargetId))) {
|
||||
this.mFramesMap.put(Integer.valueOf(key.mTargetId), new ArrayList<>());
|
||||
}
|
||||
ArrayList<Key> arrayList = this.mFramesMap.get(Integer.valueOf(key.mTargetId));
|
||||
if (arrayList != null) {
|
||||
arrayList.add(key);
|
||||
}
|
||||
}
|
||||
|
||||
public KeyFrames() {
|
||||
}
|
||||
|
||||
public KeyFrames(Context context, XmlPullParser parser) {
|
||||
Exception e;
|
||||
Key key;
|
||||
Constructor<? extends Key> constructor;
|
||||
try {
|
||||
int eventType = parser.getEventType();
|
||||
Key key2 = null;
|
||||
while (eventType != 1) {
|
||||
if (eventType == 2) {
|
||||
String name = parser.getName();
|
||||
if (sKeyMakers.containsKey(name)) {
|
||||
try {
|
||||
constructor = sKeyMakers.get(name);
|
||||
} catch (Exception e2) {
|
||||
Key key3 = key2;
|
||||
e = e2;
|
||||
key = key3;
|
||||
}
|
||||
if (constructor != null) {
|
||||
key = constructor.newInstance(new Object[0]);
|
||||
try {
|
||||
key.load(context, Xml.asAttributeSet(parser));
|
||||
addKey(key);
|
||||
} catch (Exception e3) {
|
||||
e = e3;
|
||||
Log.e(TAG, "unable to create ", e);
|
||||
key2 = key;
|
||||
eventType = parser.next();
|
||||
}
|
||||
key2 = key;
|
||||
} else {
|
||||
throw new NullPointerException("Keymaker for " + name + " not found");
|
||||
}
|
||||
} else if (name.equalsIgnoreCase("CustomAttribute")) {
|
||||
if (key2 != null && key2.mCustomConstraints != null) {
|
||||
ConstraintAttribute.parse(context, parser, key2.mCustomConstraints);
|
||||
}
|
||||
} else if (name.equalsIgnoreCase("CustomMethod") && key2 != null && key2.mCustomConstraints != null) {
|
||||
ConstraintAttribute.parse(context, parser, key2.mCustomConstraints);
|
||||
}
|
||||
} else if (eventType == 3 && ViewTransition.KEY_FRAME_SET_TAG.equals(parser.getName())) {
|
||||
return;
|
||||
}
|
||||
eventType = parser.next();
|
||||
}
|
||||
} catch (IOException e4) {
|
||||
e4.printStackTrace();
|
||||
} catch (XmlPullParserException e5) {
|
||||
e5.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void addAllFrames(MotionController motionController) {
|
||||
ArrayList<Key> arrayList = this.mFramesMap.get(-1);
|
||||
if (arrayList != null) {
|
||||
motionController.addKeys(arrayList);
|
||||
}
|
||||
}
|
||||
|
||||
public void addFrames(MotionController motionController) {
|
||||
ArrayList<Key> arrayList = this.mFramesMap.get(Integer.valueOf(motionController.mId));
|
||||
if (arrayList != null) {
|
||||
motionController.addKeys(arrayList);
|
||||
}
|
||||
ArrayList<Key> arrayList2 = this.mFramesMap.get(-1);
|
||||
if (arrayList2 != null) {
|
||||
Iterator<Key> it = arrayList2.iterator();
|
||||
while (it.hasNext()) {
|
||||
Key next = it.next();
|
||||
if (next.matches(((ConstraintLayout.LayoutParams) motionController.mView.getLayoutParams()).constraintTag)) {
|
||||
motionController.addKey(next);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static String name(int viewId, Context context) {
|
||||
return context.getResources().getResourceEntryName(viewId);
|
||||
}
|
||||
|
||||
public Set<Integer> getKeys() {
|
||||
return this.mFramesMap.keySet();
|
||||
}
|
||||
|
||||
public ArrayList<Key> getKeyFramesForView(int id) {
|
||||
return this.mFramesMap.get(Integer.valueOf(id));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user