334 lines
14 KiB
Java
334 lines
14 KiB
Java
package androidx.constraintlayout.motion.widget;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.RectF;
|
|
import android.util.AttributeSet;
|
|
import android.util.Log;
|
|
import android.util.SparseIntArray;
|
|
import android.view.View;
|
|
import androidx.constraintlayout.core.motion.utils.TypedValues;
|
|
import androidx.constraintlayout.motion.utils.ViewSpline;
|
|
import androidx.constraintlayout.widget.ConstraintAttribute;
|
|
import androidx.constraintlayout.widget.R;
|
|
import java.lang.reflect.Method;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.Locale;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class KeyTrigger extends Key {
|
|
public static final String CROSS = "CROSS";
|
|
public static final int KEY_TYPE = 5;
|
|
static final String NAME = "KeyTrigger";
|
|
public static final String NEGATIVE_CROSS = "negativeCross";
|
|
public static final String POSITIVE_CROSS = "positiveCross";
|
|
public static final String POST_LAYOUT = "postLayout";
|
|
private static final String TAG = "KeyTrigger";
|
|
public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
|
|
public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
|
|
public static final String TRIGGER_ID = "triggerID";
|
|
public static final String TRIGGER_RECEIVER = "triggerReceiver";
|
|
public static final String TRIGGER_SLACK = "triggerSlack";
|
|
public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
|
|
public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
|
|
public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
|
|
private float mFireLastPos;
|
|
private int mCurveFit = -1;
|
|
private String mCross = null;
|
|
private int mTriggerReceiver = UNSET;
|
|
private String mNegativeCross = null;
|
|
private String mPositiveCross = null;
|
|
private int mTriggerID = UNSET;
|
|
private int mTriggerCollisionId = UNSET;
|
|
private View mTriggerCollisionView = null;
|
|
float mTriggerSlack = 0.1f;
|
|
private boolean mFireCrossReset = true;
|
|
private boolean mFireNegativeReset = true;
|
|
private boolean mFirePositiveReset = true;
|
|
private float mFireThreshold = Float.NaN;
|
|
private boolean mPostLayout = false;
|
|
int mViewTransitionOnNegativeCross = UNSET;
|
|
int mViewTransitionOnPositiveCross = UNSET;
|
|
int mViewTransitionOnCross = UNSET;
|
|
RectF mCollisionRect = new RectF();
|
|
RectF mTargetRect = new RectF();
|
|
HashMap<String, Method> mMethodHashMap = new HashMap<>();
|
|
|
|
@Override // androidx.constraintlayout.motion.widget.Key
|
|
public void addValues(HashMap<String, ViewSpline> splines) {
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.motion.widget.Key
|
|
public void getAttributeNames(HashSet<String> attributes) {
|
|
}
|
|
|
|
int getCurveFit() {
|
|
return this.mCurveFit;
|
|
}
|
|
|
|
public KeyTrigger() {
|
|
this.mType = 5;
|
|
this.mCustomConstraints = new HashMap<>();
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.motion.widget.Key
|
|
public void load(Context context, AttributeSet attrs) {
|
|
Loader.read(this, context.obtainStyledAttributes(attrs, R.styleable.KeyTrigger), context);
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.motion.widget.Key
|
|
public void setValue(String tag, Object value) {
|
|
tag.hashCode();
|
|
switch (tag) {
|
|
case "positiveCross":
|
|
this.mPositiveCross = value.toString();
|
|
break;
|
|
case "viewTransitionOnPositiveCross":
|
|
this.mViewTransitionOnPositiveCross = toInt(value);
|
|
break;
|
|
case "triggerCollisionId":
|
|
this.mTriggerCollisionId = toInt(value);
|
|
break;
|
|
case "triggerID":
|
|
this.mTriggerID = toInt(value);
|
|
break;
|
|
case "negativeCross":
|
|
this.mNegativeCross = value.toString();
|
|
break;
|
|
case "triggerCollisionView":
|
|
this.mTriggerCollisionView = (View) value;
|
|
break;
|
|
case "viewTransitionOnNegativeCross":
|
|
this.mViewTransitionOnNegativeCross = toInt(value);
|
|
break;
|
|
case "CROSS":
|
|
this.mCross = value.toString();
|
|
break;
|
|
case "triggerSlack":
|
|
this.mTriggerSlack = toFloat(value);
|
|
break;
|
|
case "viewTransitionOnCross":
|
|
this.mViewTransitionOnCross = toInt(value);
|
|
break;
|
|
case "postLayout":
|
|
this.mPostLayout = toBoolean(value);
|
|
break;
|
|
case "triggerReceiver":
|
|
this.mTriggerReceiver = toInt(value);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void setUpRect(RectF rect, View child, boolean postLayout) {
|
|
rect.top = child.getTop();
|
|
rect.bottom = child.getBottom();
|
|
rect.left = child.getLeft();
|
|
rect.right = child.getRight();
|
|
if (postLayout) {
|
|
child.getMatrix().mapRect(rect);
|
|
}
|
|
}
|
|
|
|
/* JADX WARN: Removed duplicated region for block: B:68:0x008d */
|
|
/* JADX WARN: Removed duplicated region for block: B:75:0x00b7 */
|
|
/* JADX WARN: Removed duplicated region for block: B:82:0x00d1 */
|
|
/* JADX WARN: Removed duplicated region for block: B:87:0x00a2 */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public void conditionallyFire(float r10, android.view.View r11) {
|
|
/*
|
|
Method dump skipped, instructions count: 357
|
|
To view this dump add '--comments-level debug' option
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: androidx.constraintlayout.motion.widget.KeyTrigger.conditionallyFire(float, android.view.View):void");
|
|
}
|
|
|
|
private void fire(String str, View call) {
|
|
Method method;
|
|
if (str == null) {
|
|
return;
|
|
}
|
|
if (str.startsWith(".")) {
|
|
fireCustom(str, call);
|
|
return;
|
|
}
|
|
if (this.mMethodHashMap.containsKey(str)) {
|
|
method = this.mMethodHashMap.get(str);
|
|
if (method == null) {
|
|
return;
|
|
}
|
|
} else {
|
|
method = null;
|
|
}
|
|
if (method == null) {
|
|
try {
|
|
method = call.getClass().getMethod(str, new Class[0]);
|
|
this.mMethodHashMap.put(str, method);
|
|
} catch (NoSuchMethodException unused) {
|
|
this.mMethodHashMap.put(str, null);
|
|
Log.e(TypedValues.TriggerType.NAME, "Could not find method \"" + str + "\"on class " + call.getClass().getSimpleName() + " " + Debug.getName(call));
|
|
return;
|
|
}
|
|
}
|
|
try {
|
|
method.invoke(call, new Object[0]);
|
|
} catch (Exception unused2) {
|
|
Log.e(TypedValues.TriggerType.NAME, "Exception in call \"" + this.mCross + "\"on class " + call.getClass().getSimpleName() + " " + Debug.getName(call));
|
|
}
|
|
}
|
|
|
|
private void fireCustom(String str, View view) {
|
|
boolean z = str.length() == 1;
|
|
if (!z) {
|
|
str = str.substring(1).toLowerCase(Locale.ROOT);
|
|
}
|
|
for (String str2 : this.mCustomConstraints.keySet()) {
|
|
String lowerCase = str2.toLowerCase(Locale.ROOT);
|
|
if (z || lowerCase.matches(str)) {
|
|
ConstraintAttribute constraintAttribute = this.mCustomConstraints.get(str2);
|
|
if (constraintAttribute != null) {
|
|
constraintAttribute.applyCustom(view);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static class Loader {
|
|
private static final int COLLISION = 9;
|
|
private static final int CROSS = 4;
|
|
private static final int FRAME_POS = 8;
|
|
private static final int NEGATIVE_CROSS = 1;
|
|
private static final int POSITIVE_CROSS = 2;
|
|
private static final int POST_LAYOUT = 10;
|
|
private static final int TARGET_ID = 7;
|
|
private static final int TRIGGER_ID = 6;
|
|
private static final int TRIGGER_RECEIVER = 11;
|
|
private static final int TRIGGER_SLACK = 5;
|
|
private static final int VT_CROSS = 12;
|
|
private static final int VT_NEGATIVE_CROSS = 13;
|
|
private static final int VT_POSITIVE_CROSS = 14;
|
|
private static SparseIntArray mAttrMap;
|
|
|
|
private Loader() {
|
|
}
|
|
|
|
static {
|
|
SparseIntArray sparseIntArray = new SparseIntArray();
|
|
mAttrMap = sparseIntArray;
|
|
sparseIntArray.append(R.styleable.KeyTrigger_framePosition, 8);
|
|
mAttrMap.append(R.styleable.KeyTrigger_onCross, 4);
|
|
mAttrMap.append(R.styleable.KeyTrigger_onNegativeCross, 1);
|
|
mAttrMap.append(R.styleable.KeyTrigger_onPositiveCross, 2);
|
|
mAttrMap.append(R.styleable.KeyTrigger_motionTarget, 7);
|
|
mAttrMap.append(R.styleable.KeyTrigger_triggerId, 6);
|
|
mAttrMap.append(R.styleable.KeyTrigger_triggerSlack, 5);
|
|
mAttrMap.append(R.styleable.KeyTrigger_motion_triggerOnCollision, 9);
|
|
mAttrMap.append(R.styleable.KeyTrigger_motion_postLayoutCollision, 10);
|
|
mAttrMap.append(R.styleable.KeyTrigger_triggerReceiver, 11);
|
|
mAttrMap.append(R.styleable.KeyTrigger_viewTransitionOnCross, 12);
|
|
mAttrMap.append(R.styleable.KeyTrigger_viewTransitionOnNegativeCross, 13);
|
|
mAttrMap.append(R.styleable.KeyTrigger_viewTransitionOnPositiveCross, 14);
|
|
}
|
|
|
|
public static void read(KeyTrigger c, TypedArray a, Context context) {
|
|
int indexCount = a.getIndexCount();
|
|
for (int i = 0; i < indexCount; i++) {
|
|
int index = a.getIndex(i);
|
|
switch (mAttrMap.get(index)) {
|
|
case 1:
|
|
c.mNegativeCross = a.getString(index);
|
|
break;
|
|
case 2:
|
|
c.mPositiveCross = a.getString(index);
|
|
break;
|
|
case 3:
|
|
default:
|
|
Log.e(TypedValues.TriggerType.NAME, "unused attribute 0x" + Integer.toHexString(index) + " " + mAttrMap.get(index));
|
|
break;
|
|
case 4:
|
|
c.mCross = a.getString(index);
|
|
break;
|
|
case 5:
|
|
c.mTriggerSlack = a.getFloat(index, c.mTriggerSlack);
|
|
break;
|
|
case 6:
|
|
c.mTriggerID = a.getResourceId(index, c.mTriggerID);
|
|
break;
|
|
case 7:
|
|
if (MotionLayout.IS_IN_EDIT_MODE) {
|
|
c.mTargetId = a.getResourceId(index, c.mTargetId);
|
|
if (c.mTargetId == -1) {
|
|
c.mTargetString = a.getString(index);
|
|
break;
|
|
} else {
|
|
break;
|
|
}
|
|
} else if (a.peekValue(index).type == 3) {
|
|
c.mTargetString = a.getString(index);
|
|
break;
|
|
} else {
|
|
c.mTargetId = a.getResourceId(index, c.mTargetId);
|
|
break;
|
|
}
|
|
case 8:
|
|
c.mFramePosition = a.getInteger(index, c.mFramePosition);
|
|
c.mFireThreshold = (c.mFramePosition + 0.5f) / 100.0f;
|
|
break;
|
|
case 9:
|
|
c.mTriggerCollisionId = a.getResourceId(index, c.mTriggerCollisionId);
|
|
break;
|
|
case 10:
|
|
c.mPostLayout = a.getBoolean(index, c.mPostLayout);
|
|
break;
|
|
case 11:
|
|
c.mTriggerReceiver = a.getResourceId(index, c.mTriggerReceiver);
|
|
break;
|
|
case 12:
|
|
c.mViewTransitionOnCross = a.getResourceId(index, c.mViewTransitionOnCross);
|
|
break;
|
|
case 13:
|
|
c.mViewTransitionOnNegativeCross = a.getResourceId(index, c.mViewTransitionOnNegativeCross);
|
|
break;
|
|
case 14:
|
|
c.mViewTransitionOnPositiveCross = a.getResourceId(index, c.mViewTransitionOnPositiveCross);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.motion.widget.Key
|
|
public Key copy(Key src) {
|
|
super.copy(src);
|
|
KeyTrigger keyTrigger = (KeyTrigger) src;
|
|
this.mCurveFit = keyTrigger.mCurveFit;
|
|
this.mCross = keyTrigger.mCross;
|
|
this.mTriggerReceiver = keyTrigger.mTriggerReceiver;
|
|
this.mNegativeCross = keyTrigger.mNegativeCross;
|
|
this.mPositiveCross = keyTrigger.mPositiveCross;
|
|
this.mTriggerID = keyTrigger.mTriggerID;
|
|
this.mTriggerCollisionId = keyTrigger.mTriggerCollisionId;
|
|
this.mTriggerCollisionView = keyTrigger.mTriggerCollisionView;
|
|
this.mTriggerSlack = keyTrigger.mTriggerSlack;
|
|
this.mFireCrossReset = keyTrigger.mFireCrossReset;
|
|
this.mFireNegativeReset = keyTrigger.mFireNegativeReset;
|
|
this.mFirePositiveReset = keyTrigger.mFirePositiveReset;
|
|
this.mFireThreshold = keyTrigger.mFireThreshold;
|
|
this.mFireLastPos = keyTrigger.mFireLastPos;
|
|
this.mPostLayout = keyTrigger.mPostLayout;
|
|
this.mCollisionRect = keyTrigger.mCollisionRect;
|
|
this.mTargetRect = keyTrigger.mTargetRect;
|
|
this.mMethodHashMap = keyTrigger.mMethodHashMap;
|
|
return this;
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.motion.widget.Key
|
|
/* renamed from: clone */
|
|
public Key mo49clone() {
|
|
return new KeyTrigger().copy(this);
|
|
}
|
|
}
|