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.Xml; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import androidx.constraintlayout.motion.widget.MotionLayout; import androidx.constraintlayout.widget.R; import androidx.core.widget.NestedScrollView; import org.xmlpull.v1.XmlPullParser; /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes.dex */ public class TouchResponse { private static final boolean DEBUG = false; static final int FLAG_DISABLE_POST_SCROLL = 1; static final int FLAG_DISABLE_SCROLL = 2; private static final int SIDE_BOTTOM = 3; private static final int SIDE_END = 6; private static final int SIDE_LEFT = 1; private static final int SIDE_MIDDLE = 4; private static final int SIDE_RIGHT = 2; private static final int SIDE_START = 5; private static final int SIDE_TOP = 0; private static final String TAG = "TouchResponse"; private static final int TOUCH_DOWN = 1; private static final int TOUCH_END = 5; private static final int TOUCH_LEFT = 2; private static final int TOUCH_RIGHT = 3; private static final int TOUCH_START = 4; private static final int TOUCH_UP = 0; private float mLastTouchX; private float mLastTouchY; private final MotionLayout mMotionLayout; private static final float[][] TOUCH_SIDES = {new float[]{0.5f, 0.0f}, new float[]{0.0f, 0.5f}, new float[]{1.0f, 0.5f}, new float[]{0.5f, 1.0f}, new float[]{0.5f, 0.5f}, new float[]{0.0f, 0.5f}, new float[]{1.0f, 0.5f}}; private static final float[][] TOUCH_DIRECTION = {new float[]{0.0f, -1.0f}, new float[]{0.0f, 1.0f}, new float[]{-1.0f, 0.0f}, new float[]{1.0f, 0.0f}, new float[]{-1.0f, 0.0f}, new float[]{1.0f, 0.0f}}; private int mTouchAnchorSide = 0; private int mTouchSide = 0; private int mOnTouchUp = 0; private int mTouchAnchorId = -1; private int mTouchRegionId = -1; private int mLimitBoundsTo = -1; private float mTouchAnchorY = 0.5f; private float mTouchAnchorX = 0.5f; private float mTouchDirectionX = 0.0f; private float mTouchDirectionY = 1.0f; private boolean mDragStarted = false; private float[] mAnchorDpDt = new float[2]; private float mMaxVelocity = 4.0f; private float mMaxAcceleration = 1.2f; private boolean mMoveWhenScrollAtTop = true; private float mDragScale = 1.0f; private int mFlags = 0; private float mDragThreshold = 10.0f; /* JADX INFO: Access modifiers changed from: package-private */ public float dot(float f, float f2) { return (f * this.mTouchDirectionX) + (f2 * this.mTouchDirectionY); } public int getAnchorId() { return this.mTouchAnchorId; } public int getFlags() { return this.mFlags; } int getLimitBoundsToId() { return this.mLimitBoundsTo; } /* JADX INFO: Access modifiers changed from: package-private */ public float getMaxAcceleration() { return this.mMaxAcceleration; } public float getMaxVelocity() { return this.mMaxVelocity; } /* JADX INFO: Access modifiers changed from: package-private */ public boolean getMoveWhenScrollAtTop() { return this.mMoveWhenScrollAtTop; } /* JADX INFO: Access modifiers changed from: package-private */ public int getTouchRegionId() { return this.mTouchRegionId; } public void setAnchorId(int i) { this.mTouchAnchorId = i; } /* JADX INFO: Access modifiers changed from: package-private */ public void setDown(float f, float f2) { this.mLastTouchX = f; this.mLastTouchY = f2; } public void setMaxAcceleration(float f) { this.mMaxAcceleration = f; } public void setMaxVelocity(float f) { this.mMaxVelocity = f; } public void setTouchAnchorLocation(float f, float f2) { this.mTouchAnchorX = f; this.mTouchAnchorY = f2; } /* JADX INFO: Access modifiers changed from: package-private */ public void setUpTouchEvent(float f, float f2) { this.mLastTouchX = f; this.mLastTouchY = f2; this.mDragStarted = false; } /* JADX INFO: Access modifiers changed from: package-private */ public TouchResponse(Context context, MotionLayout motionLayout, XmlPullParser xmlPullParser) { this.mMotionLayout = motionLayout; fillFromAttributeList(context, Xml.asAttributeSet(xmlPullParser)); } public void setRTL(boolean z) { if (z) { float[][] fArr = TOUCH_DIRECTION; fArr[4] = fArr[3]; fArr[5] = fArr[2]; float[][] fArr2 = TOUCH_SIDES; fArr2[5] = fArr2[2]; fArr2[6] = fArr2[1]; } else { float[][] fArr3 = TOUCH_DIRECTION; fArr3[4] = fArr3[2]; fArr3[5] = fArr3[3]; float[][] fArr4 = TOUCH_SIDES; fArr4[5] = fArr4[1]; fArr4[6] = fArr4[2]; } float[] fArr5 = TOUCH_SIDES[this.mTouchAnchorSide]; this.mTouchAnchorX = fArr5[0]; this.mTouchAnchorY = fArr5[1]; float[] fArr6 = TOUCH_DIRECTION[this.mTouchSide]; this.mTouchDirectionX = fArr6[0]; this.mTouchDirectionY = fArr6[1]; } private void fillFromAttributeList(Context context, AttributeSet attributeSet) { TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.OnSwipe); fill(obtainStyledAttributes); obtainStyledAttributes.recycle(); } private void fill(TypedArray typedArray) { int indexCount = typedArray.getIndexCount(); for (int i = 0; i < indexCount; i++) { int index = typedArray.getIndex(i); if (index == R.styleable.OnSwipe_touchAnchorId) { this.mTouchAnchorId = typedArray.getResourceId(index, this.mTouchAnchorId); } else if (index == R.styleable.OnSwipe_touchAnchorSide) { int i2 = typedArray.getInt(index, this.mTouchAnchorSide); this.mTouchAnchorSide = i2; float[] fArr = TOUCH_SIDES[i2]; this.mTouchAnchorX = fArr[0]; this.mTouchAnchorY = fArr[1]; } else if (index == R.styleable.OnSwipe_dragDirection) { int i3 = typedArray.getInt(index, this.mTouchSide); this.mTouchSide = i3; float[] fArr2 = TOUCH_DIRECTION[i3]; this.mTouchDirectionX = fArr2[0]; this.mTouchDirectionY = fArr2[1]; } else if (index == R.styleable.OnSwipe_maxVelocity) { this.mMaxVelocity = typedArray.getFloat(index, this.mMaxVelocity); } else if (index == R.styleable.OnSwipe_maxAcceleration) { this.mMaxAcceleration = typedArray.getFloat(index, this.mMaxAcceleration); } else if (index == R.styleable.OnSwipe_moveWhenScrollAtTop) { this.mMoveWhenScrollAtTop = typedArray.getBoolean(index, this.mMoveWhenScrollAtTop); } else if (index == R.styleable.OnSwipe_dragScale) { this.mDragScale = typedArray.getFloat(index, this.mDragScale); } else if (index == R.styleable.OnSwipe_dragThreshold) { this.mDragThreshold = typedArray.getFloat(index, this.mDragThreshold); } else if (index == R.styleable.OnSwipe_touchRegionId) { this.mTouchRegionId = typedArray.getResourceId(index, this.mTouchRegionId); } else if (index == R.styleable.OnSwipe_onTouchUp) { this.mOnTouchUp = typedArray.getInt(index, this.mOnTouchUp); } else if (index == R.styleable.OnSwipe_nestedScrollFlags) { this.mFlags = typedArray.getInteger(index, 0); } else if (index == R.styleable.OnSwipe_limitBoundsTo) { this.mLimitBoundsTo = typedArray.getResourceId(index, 0); } } } /* JADX INFO: Access modifiers changed from: package-private */ public void processTouchEvent(MotionEvent motionEvent, MotionLayout.MotionTracker motionTracker, int i, MotionScene motionScene) { int i2; float f; motionTracker.addMovement(motionEvent); int action = motionEvent.getAction(); if (action == 0) { this.mLastTouchX = motionEvent.getRawX(); this.mLastTouchY = motionEvent.getRawY(); this.mDragStarted = false; return; } if (action == 1) { this.mDragStarted = false; motionTracker.computeCurrentVelocity(1000); float xVelocity = motionTracker.getXVelocity(); float yVelocity = motionTracker.getYVelocity(); float progress = this.mMotionLayout.getProgress(); int i3 = this.mTouchAnchorId; if (i3 != -1) { this.mMotionLayout.getAnchorDpDt(i3, progress, this.mTouchAnchorX, this.mTouchAnchorY, this.mAnchorDpDt); } else { float min = Math.min(this.mMotionLayout.getWidth(), this.mMotionLayout.getHeight()); float[] fArr = this.mAnchorDpDt; fArr[1] = this.mTouchDirectionY * min; fArr[0] = min * this.mTouchDirectionX; } float f2 = this.mTouchDirectionX; float[] fArr2 = this.mAnchorDpDt; float f3 = f2 != 0.0f ? xVelocity / fArr2[0] : yVelocity / fArr2[1]; float f4 = !Float.isNaN(f3) ? (f3 / 3.0f) + progress : progress; if (f4 == 0.0f || f4 == 1.0f || (i2 = this.mOnTouchUp) == 3) { if (0.0f >= f4 || 1.0f <= f4) { this.mMotionLayout.setState(MotionLayout.TransitionState.FINISHED); return; } return; } this.mMotionLayout.touchAnimateTo(i2, ((double) f4) < 0.5d ? 0.0f : 1.0f, f3); if (0.0f >= progress || 1.0f <= progress) { this.mMotionLayout.setState(MotionLayout.TransitionState.FINISHED); return; } return; } if (action != 2) { return; } float rawY = motionEvent.getRawY() - this.mLastTouchY; float rawX = motionEvent.getRawX() - this.mLastTouchX; if (Math.abs((this.mTouchDirectionX * rawX) + (this.mTouchDirectionY * rawY)) > this.mDragThreshold || this.mDragStarted) { float progress2 = this.mMotionLayout.getProgress(); if (!this.mDragStarted) { this.mDragStarted = true; this.mMotionLayout.setProgress(progress2); } int i4 = this.mTouchAnchorId; if (i4 != -1) { this.mMotionLayout.getAnchorDpDt(i4, progress2, this.mTouchAnchorX, this.mTouchAnchorY, this.mAnchorDpDt); } else { float min2 = Math.min(this.mMotionLayout.getWidth(), this.mMotionLayout.getHeight()); float[] fArr3 = this.mAnchorDpDt; fArr3[1] = this.mTouchDirectionY * min2; fArr3[0] = min2 * this.mTouchDirectionX; } float f5 = this.mTouchDirectionX; float[] fArr4 = this.mAnchorDpDt; if (Math.abs(((f5 * fArr4[0]) + (this.mTouchDirectionY * fArr4[1])) * this.mDragScale) < 0.01d) { float[] fArr5 = this.mAnchorDpDt; fArr5[0] = 0.01f; fArr5[1] = 0.01f; } if (this.mTouchDirectionX != 0.0f) { f = rawX / this.mAnchorDpDt[0]; } else { f = rawY / this.mAnchorDpDt[1]; } float max = Math.max(Math.min(progress2 + f, 1.0f), 0.0f); if (max != this.mMotionLayout.getProgress()) { this.mMotionLayout.setProgress(max); motionTracker.computeCurrentVelocity(1000); this.mMotionLayout.mLastVelocity = this.mTouchDirectionX != 0.0f ? motionTracker.getXVelocity() / this.mAnchorDpDt[0] : motionTracker.getYVelocity() / this.mAnchorDpDt[1]; } else { this.mMotionLayout.mLastVelocity = 0.0f; } this.mLastTouchX = motionEvent.getRawX(); this.mLastTouchY = motionEvent.getRawY(); } } /* JADX INFO: Access modifiers changed from: package-private */ public float getProgressDirection(float f, float f2) { this.mMotionLayout.getAnchorDpDt(this.mTouchAnchorId, this.mMotionLayout.getProgress(), this.mTouchAnchorX, this.mTouchAnchorY, this.mAnchorDpDt); float f3 = this.mTouchDirectionX; if (f3 != 0.0f) { float[] fArr = this.mAnchorDpDt; if (fArr[0] == 0.0f) { fArr[0] = 1.0E-7f; } return (f * f3) / fArr[0]; } float[] fArr2 = this.mAnchorDpDt; if (fArr2[1] == 0.0f) { fArr2[1] = 1.0E-7f; } return (f2 * this.mTouchDirectionY) / fArr2[1]; } /* JADX INFO: Access modifiers changed from: package-private */ public void scrollUp(float f, float f2) { this.mDragStarted = false; float progress = this.mMotionLayout.getProgress(); this.mMotionLayout.getAnchorDpDt(this.mTouchAnchorId, progress, this.mTouchAnchorX, this.mTouchAnchorY, this.mAnchorDpDt); float f3 = this.mTouchDirectionX; float[] fArr = this.mAnchorDpDt; float f4 = f3 != 0.0f ? (f * f3) / fArr[0] : (f2 * this.mTouchDirectionY) / fArr[1]; if (!Float.isNaN(f4)) { progress += f4 / 3.0f; } if (progress != 0.0f) { boolean z = progress != 1.0f; int i = this.mOnTouchUp; if ((i != 3) && z) { this.mMotionLayout.touchAnimateTo(i, ((double) progress) >= 0.5d ? 1.0f : 0.0f, f4); } } } /* JADX INFO: Access modifiers changed from: package-private */ public void scrollMove(float f, float f2) { float f3; float progress = this.mMotionLayout.getProgress(); if (!this.mDragStarted) { this.mDragStarted = true; this.mMotionLayout.setProgress(progress); } this.mMotionLayout.getAnchorDpDt(this.mTouchAnchorId, progress, this.mTouchAnchorX, this.mTouchAnchorY, this.mAnchorDpDt); float f4 = this.mTouchDirectionX; float[] fArr = this.mAnchorDpDt; if (Math.abs((f4 * fArr[0]) + (this.mTouchDirectionY * fArr[1])) < 0.01d) { float[] fArr2 = this.mAnchorDpDt; fArr2[0] = 0.01f; fArr2[1] = 0.01f; } float f5 = this.mTouchDirectionX; if (f5 != 0.0f) { f3 = (f * f5) / this.mAnchorDpDt[0]; } else { f3 = (f2 * this.mTouchDirectionY) / this.mAnchorDpDt[1]; } float max = Math.max(Math.min(progress + f3, 1.0f), 0.0f); if (max != this.mMotionLayout.getProgress()) { this.mMotionLayout.setProgress(max); } } /* JADX INFO: Access modifiers changed from: package-private */ public void setupTouch() { View view; int i = this.mTouchAnchorId; if (i != -1) { view = this.mMotionLayout.findViewById(i); if (view == null) { Log.e(TAG, "cannot find TouchAnchorId @id/" + Debug.getName(this.mMotionLayout.getContext(), this.mTouchAnchorId)); } } else { view = null; } if (view instanceof NestedScrollView) { NestedScrollView nestedScrollView = (NestedScrollView) view; nestedScrollView.setOnTouchListener(new View.OnTouchListener() { // from class: androidx.constraintlayout.motion.widget.TouchResponse.1 @Override // android.view.View.OnTouchListener public boolean onTouch(View view2, MotionEvent motionEvent) { return false; } }); nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { // from class: androidx.constraintlayout.motion.widget.TouchResponse.2 @Override // androidx.core.widget.NestedScrollView.OnScrollChangeListener public void onScrollChange(NestedScrollView nestedScrollView2, int i2, int i3, int i4, int i5) { } }); } } /* JADX INFO: Access modifiers changed from: package-private */ public RectF getTouchRegion(ViewGroup viewGroup, RectF rectF) { View findViewById; int i = this.mTouchRegionId; if (i == -1 || (findViewById = viewGroup.findViewById(i)) == null) { return null; } rectF.set(findViewById.getLeft(), findViewById.getTop(), findViewById.getRight(), findViewById.getBottom()); return rectF; } /* JADX INFO: Access modifiers changed from: package-private */ public RectF getLimitBoundsTo(ViewGroup viewGroup, RectF rectF) { View findViewById; int i = this.mLimitBoundsTo; if (i == -1 || (findViewById = viewGroup.findViewById(i)) == null) { return null; } rectF.set(findViewById.getLeft(), findViewById.getTop(), findViewById.getRight(), findViewById.getBottom()); return rectF; } public String toString() { return this.mTouchDirectionX + " , " + this.mTouchDirectionY; } }