package androidx.recyclerview.widget; import android.animation.Animator; import android.animation.ValueAnimator; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Rect; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewConfiguration; import android.view.animation.Interpolator; import androidx.core.view.GestureDetectorCompat; import androidx.core.view.ViewCompat; import androidx.recyclerview.R; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; /* loaded from: classes2.dex */ public class ItemTouchHelper extends RecyclerView.ItemDecoration implements RecyclerView.OnChildAttachStateChangeListener { static final int ACTION_MODE_DRAG_MASK = 16711680; private static final int ACTION_MODE_IDLE_MASK = 255; static final int ACTION_MODE_SWIPE_MASK = 65280; public static final int ACTION_STATE_DRAG = 2; public static final int ACTION_STATE_IDLE = 0; public static final int ACTION_STATE_SWIPE = 1; private static final int ACTIVE_POINTER_ID_NONE = -1; public static final int ANIMATION_TYPE_DRAG = 8; public static final int ANIMATION_TYPE_SWIPE_CANCEL = 4; public static final int ANIMATION_TYPE_SWIPE_SUCCESS = 2; private static final boolean DEBUG = false; static final int DIRECTION_FLAG_COUNT = 8; public static final int DOWN = 2; public static final int END = 32; public static final int LEFT = 4; private static final int PIXELS_PER_SECOND = 1000; public static final int RIGHT = 8; public static final int START = 16; private static final String TAG = "ItemTouchHelper"; public static final int UP = 1; Callback mCallback; private List mDistances; private long mDragScrollStartTimeInMs; float mDx; float mDy; GestureDetectorCompat mGestureDetector; float mInitialTouchX; float mInitialTouchY; private ItemTouchHelperGestureListener mItemTouchHelperGestureListener; private float mMaxSwipeVelocity; RecyclerView mRecyclerView; int mSelectedFlags; private float mSelectedStartX; private float mSelectedStartY; private int mSlop; private List mSwapTargets; private float mSwipeEscapeVelocity; private Rect mTmpRect; VelocityTracker mVelocityTracker; final List mPendingCleanup = new ArrayList(); private final float[] mTmpPosition = new float[2]; RecyclerView.ViewHolder mSelected = null; int mActivePointerId = -1; private int mActionState = 0; List mRecoverAnimations = new ArrayList(); final Runnable mScrollRunnable = new Runnable() { // from class: androidx.recyclerview.widget.ItemTouchHelper.1 @Override // java.lang.Runnable public void run() { if (ItemTouchHelper.this.mSelected == null || !ItemTouchHelper.this.scrollIfNecessary()) { return; } if (ItemTouchHelper.this.mSelected != null) { ItemTouchHelper itemTouchHelper = ItemTouchHelper.this; itemTouchHelper.moveIfNecessary(itemTouchHelper.mSelected); } ItemTouchHelper.this.mRecyclerView.removeCallbacks(ItemTouchHelper.this.mScrollRunnable); ViewCompat.postOnAnimation(ItemTouchHelper.this.mRecyclerView, this); } }; private RecyclerView.ChildDrawingOrderCallback mChildDrawingOrderCallback = null; View mOverdrawChild = null; int mOverdrawChildPosition = -1; private final RecyclerView.OnItemTouchListener mOnItemTouchListener = new RecyclerView.OnItemTouchListener() { // from class: androidx.recyclerview.widget.ItemTouchHelper.2 @Override // androidx.recyclerview.widget.RecyclerView.OnItemTouchListener public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { int findPointerIndex; RecoverAnimation findAnimation; ItemTouchHelper.this.mGestureDetector.onTouchEvent(motionEvent); int actionMasked = motionEvent.getActionMasked(); if (actionMasked == 0) { ItemTouchHelper.this.mActivePointerId = motionEvent.getPointerId(0); ItemTouchHelper.this.mInitialTouchX = motionEvent.getX(); ItemTouchHelper.this.mInitialTouchY = motionEvent.getY(); ItemTouchHelper.this.obtainVelocityTracker(); if (ItemTouchHelper.this.mSelected == null && (findAnimation = ItemTouchHelper.this.findAnimation(motionEvent)) != null) { ItemTouchHelper.this.mInitialTouchX -= findAnimation.mX; ItemTouchHelper.this.mInitialTouchY -= findAnimation.mY; ItemTouchHelper.this.endRecoverAnimation(findAnimation.mViewHolder, true); if (ItemTouchHelper.this.mPendingCleanup.remove(findAnimation.mViewHolder.itemView)) { ItemTouchHelper.this.mCallback.clearView(ItemTouchHelper.this.mRecyclerView, findAnimation.mViewHolder); } ItemTouchHelper.this.select(findAnimation.mViewHolder, findAnimation.mActionState); ItemTouchHelper itemTouchHelper = ItemTouchHelper.this; itemTouchHelper.updateDxDy(motionEvent, itemTouchHelper.mSelectedFlags, 0); } } else if (actionMasked == 3 || actionMasked == 1) { ItemTouchHelper.this.mActivePointerId = -1; ItemTouchHelper.this.select(null, 0); } else if (ItemTouchHelper.this.mActivePointerId != -1 && (findPointerIndex = motionEvent.findPointerIndex(ItemTouchHelper.this.mActivePointerId)) >= 0) { ItemTouchHelper.this.checkSelectForSwipe(actionMasked, motionEvent, findPointerIndex); } if (ItemTouchHelper.this.mVelocityTracker != null) { ItemTouchHelper.this.mVelocityTracker.addMovement(motionEvent); } return ItemTouchHelper.this.mSelected != null; } @Override // androidx.recyclerview.widget.RecyclerView.OnItemTouchListener public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { ItemTouchHelper.this.mGestureDetector.onTouchEvent(motionEvent); if (ItemTouchHelper.this.mVelocityTracker != null) { ItemTouchHelper.this.mVelocityTracker.addMovement(motionEvent); } if (ItemTouchHelper.this.mActivePointerId == -1) { return; } int actionMasked = motionEvent.getActionMasked(); int findPointerIndex = motionEvent.findPointerIndex(ItemTouchHelper.this.mActivePointerId); if (findPointerIndex >= 0) { ItemTouchHelper.this.checkSelectForSwipe(actionMasked, motionEvent, findPointerIndex); } RecyclerView.ViewHolder viewHolder = ItemTouchHelper.this.mSelected; if (viewHolder == null) { return; } if (actionMasked != 1) { if (actionMasked == 2) { if (findPointerIndex >= 0) { ItemTouchHelper itemTouchHelper = ItemTouchHelper.this; itemTouchHelper.updateDxDy(motionEvent, itemTouchHelper.mSelectedFlags, findPointerIndex); ItemTouchHelper.this.moveIfNecessary(viewHolder); ItemTouchHelper.this.mRecyclerView.removeCallbacks(ItemTouchHelper.this.mScrollRunnable); ItemTouchHelper.this.mScrollRunnable.run(); ItemTouchHelper.this.mRecyclerView.invalidate(); return; } return; } if (actionMasked != 3) { if (actionMasked != 6) { return; } int actionIndex = motionEvent.getActionIndex(); if (motionEvent.getPointerId(actionIndex) == ItemTouchHelper.this.mActivePointerId) { ItemTouchHelper.this.mActivePointerId = motionEvent.getPointerId(actionIndex == 0 ? 1 : 0); ItemTouchHelper itemTouchHelper2 = ItemTouchHelper.this; itemTouchHelper2.updateDxDy(motionEvent, itemTouchHelper2.mSelectedFlags, actionIndex); return; } return; } if (ItemTouchHelper.this.mVelocityTracker != null) { ItemTouchHelper.this.mVelocityTracker.clear(); } } ItemTouchHelper.this.select(null, 0); ItemTouchHelper.this.mActivePointerId = -1; } @Override // androidx.recyclerview.widget.RecyclerView.OnItemTouchListener public void onRequestDisallowInterceptTouchEvent(boolean z) { if (z) { ItemTouchHelper.this.select(null, 0); } } }; /* loaded from: classes2.dex */ public interface ViewDropHandler { void prepareForDrop(View view, View view2, int i, int i2); } private void addChildDrawingOrderCallback() { } @Override // androidx.recyclerview.widget.RecyclerView.OnChildAttachStateChangeListener public void onChildViewAttachedToWindow(View view) { } public ItemTouchHelper(Callback callback) { this.mCallback = callback; } private static boolean hitTest(View view, float f, float f2, float f3, float f4) { return f >= f3 && f <= f3 + ((float) view.getWidth()) && f2 >= f4 && f2 <= f4 + ((float) view.getHeight()); } public void attachToRecyclerView(RecyclerView recyclerView) { RecyclerView recyclerView2 = this.mRecyclerView; if (recyclerView2 == recyclerView) { return; } if (recyclerView2 != null) { destroyCallbacks(); } this.mRecyclerView = recyclerView; if (recyclerView != null) { Resources resources = recyclerView.getResources(); this.mSwipeEscapeVelocity = resources.getDimension(R.dimen.item_touch_helper_swipe_escape_velocity); this.mMaxSwipeVelocity = resources.getDimension(R.dimen.item_touch_helper_swipe_escape_max_velocity); setupCallbacks(); } } private void setupCallbacks() { this.mSlop = ViewConfiguration.get(this.mRecyclerView.getContext()).getScaledTouchSlop(); this.mRecyclerView.addItemDecoration(this); this.mRecyclerView.addOnItemTouchListener(this.mOnItemTouchListener); this.mRecyclerView.addOnChildAttachStateChangeListener(this); startGestureDetection(); } private void destroyCallbacks() { this.mRecyclerView.removeItemDecoration(this); this.mRecyclerView.removeOnItemTouchListener(this.mOnItemTouchListener); this.mRecyclerView.removeOnChildAttachStateChangeListener(this); for (int size = this.mRecoverAnimations.size() - 1; size >= 0; size--) { RecoverAnimation recoverAnimation = this.mRecoverAnimations.get(0); recoverAnimation.cancel(); this.mCallback.clearView(this.mRecyclerView, recoverAnimation.mViewHolder); } this.mRecoverAnimations.clear(); this.mOverdrawChild = null; this.mOverdrawChildPosition = -1; releaseVelocityTracker(); stopGestureDetection(); } private void startGestureDetection() { this.mItemTouchHelperGestureListener = new ItemTouchHelperGestureListener(); this.mGestureDetector = new GestureDetectorCompat(this.mRecyclerView.getContext(), this.mItemTouchHelperGestureListener); } private void stopGestureDetection() { ItemTouchHelperGestureListener itemTouchHelperGestureListener = this.mItemTouchHelperGestureListener; if (itemTouchHelperGestureListener != null) { itemTouchHelperGestureListener.doNotReactToLongPress(); this.mItemTouchHelperGestureListener = null; } if (this.mGestureDetector != null) { this.mGestureDetector = null; } } private void getSelectedDxDy(float[] fArr) { if ((this.mSelectedFlags & 12) != 0) { fArr[0] = (this.mSelectedStartX + this.mDx) - this.mSelected.itemView.getLeft(); } else { fArr[0] = this.mSelected.itemView.getTranslationX(); } if ((this.mSelectedFlags & 3) != 0) { fArr[1] = (this.mSelectedStartY + this.mDy) - this.mSelected.itemView.getTop(); } else { fArr[1] = this.mSelected.itemView.getTranslationY(); } } @Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration public void onDrawOver(Canvas canvas, RecyclerView recyclerView, RecyclerView.State state) { float f; float f2; if (this.mSelected != null) { getSelectedDxDy(this.mTmpPosition); float[] fArr = this.mTmpPosition; float f3 = fArr[0]; f2 = fArr[1]; f = f3; } else { f = 0.0f; f2 = 0.0f; } this.mCallback.onDrawOver(canvas, recyclerView, this.mSelected, this.mRecoverAnimations, this.mActionState, f, f2); } @Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration public void onDraw(Canvas canvas, RecyclerView recyclerView, RecyclerView.State state) { float f; float f2; this.mOverdrawChildPosition = -1; if (this.mSelected != null) { getSelectedDxDy(this.mTmpPosition); float[] fArr = this.mTmpPosition; float f3 = fArr[0]; f2 = fArr[1]; f = f3; } else { f = 0.0f; f2 = 0.0f; } this.mCallback.onDraw(canvas, recyclerView, this.mSelected, this.mRecoverAnimations, this.mActionState, f, f2); } /* JADX WARN: Removed duplicated region for block: B:39:0x012a */ /* JADX WARN: Removed duplicated region for block: B:45:0x0136 */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ void select(androidx.recyclerview.widget.RecyclerView.ViewHolder r24, int r25) { /* Method dump skipped, instructions count: 334 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: androidx.recyclerview.widget.ItemTouchHelper.select(androidx.recyclerview.widget.RecyclerView$ViewHolder, int):void"); } void postDispatchSwipe(final RecoverAnimation recoverAnimation, final int i) { this.mRecyclerView.post(new Runnable() { // from class: androidx.recyclerview.widget.ItemTouchHelper.4 @Override // java.lang.Runnable public void run() { if (ItemTouchHelper.this.mRecyclerView == null || !ItemTouchHelper.this.mRecyclerView.isAttachedToWindow() || recoverAnimation.mOverridden || recoverAnimation.mViewHolder.getAbsoluteAdapterPosition() == -1) { return; } RecyclerView.ItemAnimator itemAnimator = ItemTouchHelper.this.mRecyclerView.getItemAnimator(); if ((itemAnimator == null || !itemAnimator.isRunning(null)) && !ItemTouchHelper.this.hasRunningRecoverAnim()) { ItemTouchHelper.this.mCallback.onSwiped(recoverAnimation.mViewHolder, i); } else { ItemTouchHelper.this.mRecyclerView.post(this); } } }); } boolean hasRunningRecoverAnim() { int size = this.mRecoverAnimations.size(); for (int i = 0; i < size; i++) { if (!this.mRecoverAnimations.get(i).mEnded) { return true; } } return false; } /* JADX WARN: Code restructure failed: missing block: B:42:0x00c1, code lost: if (r1 > 0) goto L37; */ /* JADX WARN: Removed duplicated region for block: B:20:0x0084 */ /* JADX WARN: Removed duplicated region for block: B:25:0x00c7 */ /* JADX WARN: Removed duplicated region for block: B:28:0x00e1 */ /* JADX WARN: Removed duplicated region for block: B:30:0x0100 A[ADDED_TO_REGION] */ /* JADX WARN: Removed duplicated region for block: B:35:0x010c */ /* JADX WARN: Removed duplicated region for block: B:38:0x00fd */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ boolean scrollIfNecessary() { /* Method dump skipped, instructions count: 277 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: androidx.recyclerview.widget.ItemTouchHelper.scrollIfNecessary():boolean"); } private List findSwapTargets(RecyclerView.ViewHolder viewHolder) { RecyclerView.ViewHolder viewHolder2 = viewHolder; List list = this.mSwapTargets; if (list == null) { this.mSwapTargets = new ArrayList(); this.mDistances = new ArrayList(); } else { list.clear(); this.mDistances.clear(); } int boundingBoxMargin = this.mCallback.getBoundingBoxMargin(); int round = Math.round(this.mSelectedStartX + this.mDx) - boundingBoxMargin; int round2 = Math.round(this.mSelectedStartY + this.mDy) - boundingBoxMargin; int i = boundingBoxMargin * 2; int width = viewHolder2.itemView.getWidth() + round + i; int height = viewHolder2.itemView.getHeight() + round2 + i; int i2 = (round + width) / 2; int i3 = (round2 + height) / 2; RecyclerView.LayoutManager layoutManager = this.mRecyclerView.getLayoutManager(); int childCount = layoutManager.getChildCount(); int i4 = 0; while (i4 < childCount) { View childAt = layoutManager.getChildAt(i4); if (childAt != viewHolder2.itemView && childAt.getBottom() >= round2 && childAt.getTop() <= height && childAt.getRight() >= round && childAt.getLeft() <= width) { RecyclerView.ViewHolder childViewHolder = this.mRecyclerView.getChildViewHolder(childAt); if (this.mCallback.canDropOver(this.mRecyclerView, this.mSelected, childViewHolder)) { int abs = Math.abs(i2 - ((childAt.getLeft() + childAt.getRight()) / 2)); int abs2 = Math.abs(i3 - ((childAt.getTop() + childAt.getBottom()) / 2)); int i5 = (abs * abs) + (abs2 * abs2); int size = this.mSwapTargets.size(); int i6 = 0; for (int i7 = 0; i7 < size && i5 > this.mDistances.get(i7).intValue(); i7++) { i6++; } this.mSwapTargets.add(i6, childViewHolder); this.mDistances.add(i6, Integer.valueOf(i5)); } } i4++; viewHolder2 = viewHolder; } return this.mSwapTargets; } void moveIfNecessary(RecyclerView.ViewHolder viewHolder) { if (!this.mRecyclerView.isLayoutRequested() && this.mActionState == 2) { float moveThreshold = this.mCallback.getMoveThreshold(viewHolder); int i = (int) (this.mSelectedStartX + this.mDx); int i2 = (int) (this.mSelectedStartY + this.mDy); if (Math.abs(i2 - viewHolder.itemView.getTop()) >= viewHolder.itemView.getHeight() * moveThreshold || Math.abs(i - viewHolder.itemView.getLeft()) >= viewHolder.itemView.getWidth() * moveThreshold) { List findSwapTargets = findSwapTargets(viewHolder); if (findSwapTargets.size() == 0) { return; } RecyclerView.ViewHolder chooseDropTarget = this.mCallback.chooseDropTarget(viewHolder, findSwapTargets, i, i2); if (chooseDropTarget == null) { this.mSwapTargets.clear(); this.mDistances.clear(); return; } int absoluteAdapterPosition = chooseDropTarget.getAbsoluteAdapterPosition(); int absoluteAdapterPosition2 = viewHolder.getAbsoluteAdapterPosition(); if (this.mCallback.onMove(this.mRecyclerView, viewHolder, chooseDropTarget)) { this.mCallback.onMoved(this.mRecyclerView, viewHolder, absoluteAdapterPosition2, chooseDropTarget, absoluteAdapterPosition, i, i2); } } } } @Override // androidx.recyclerview.widget.RecyclerView.OnChildAttachStateChangeListener public void onChildViewDetachedFromWindow(View view) { removeChildDrawingOrderCallbackIfNecessary(view); RecyclerView.ViewHolder childViewHolder = this.mRecyclerView.getChildViewHolder(view); if (childViewHolder == null) { return; } RecyclerView.ViewHolder viewHolder = this.mSelected; if (viewHolder != null && childViewHolder == viewHolder) { select(null, 0); return; } endRecoverAnimation(childViewHolder, false); if (this.mPendingCleanup.remove(childViewHolder.itemView)) { this.mCallback.clearView(this.mRecyclerView, childViewHolder); } } void endRecoverAnimation(RecyclerView.ViewHolder viewHolder, boolean z) { for (int size = this.mRecoverAnimations.size() - 1; size >= 0; size--) { RecoverAnimation recoverAnimation = this.mRecoverAnimations.get(size); if (recoverAnimation.mViewHolder == viewHolder) { recoverAnimation.mOverridden |= z; if (!recoverAnimation.mEnded) { recoverAnimation.cancel(); } this.mRecoverAnimations.remove(size); return; } } } @Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration public void getItemOffsets(Rect rect, View view, RecyclerView recyclerView, RecyclerView.State state) { rect.setEmpty(); } void obtainVelocityTracker() { VelocityTracker velocityTracker = this.mVelocityTracker; if (velocityTracker != null) { velocityTracker.recycle(); } this.mVelocityTracker = VelocityTracker.obtain(); } private void releaseVelocityTracker() { VelocityTracker velocityTracker = this.mVelocityTracker; if (velocityTracker != null) { velocityTracker.recycle(); this.mVelocityTracker = null; } } private RecyclerView.ViewHolder findSwipedView(MotionEvent motionEvent) { View findChildView; RecyclerView.LayoutManager layoutManager = this.mRecyclerView.getLayoutManager(); int i = this.mActivePointerId; if (i == -1) { return null; } int findPointerIndex = motionEvent.findPointerIndex(i); float x = motionEvent.getX(findPointerIndex) - this.mInitialTouchX; float y = motionEvent.getY(findPointerIndex) - this.mInitialTouchY; float abs = Math.abs(x); float abs2 = Math.abs(y); int i2 = this.mSlop; if (abs < i2 && abs2 < i2) { return null; } if (abs > abs2 && layoutManager.canScrollHorizontally()) { return null; } if ((abs2 <= abs || !layoutManager.canScrollVertically()) && (findChildView = findChildView(motionEvent)) != null) { return this.mRecyclerView.getChildViewHolder(findChildView); } return null; } void checkSelectForSwipe(int i, MotionEvent motionEvent, int i2) { RecyclerView.ViewHolder findSwipedView; int absoluteMovementFlags; if (this.mSelected != null || i != 2 || this.mActionState == 2 || !this.mCallback.isItemViewSwipeEnabled() || this.mRecyclerView.getScrollState() == 1 || (findSwipedView = findSwipedView(motionEvent)) == null || (absoluteMovementFlags = (this.mCallback.getAbsoluteMovementFlags(this.mRecyclerView, findSwipedView) & 65280) >> 8) == 0) { return; } float x = motionEvent.getX(i2); float y = motionEvent.getY(i2); float f = x - this.mInitialTouchX; float f2 = y - this.mInitialTouchY; float abs = Math.abs(f); float abs2 = Math.abs(f2); int i3 = this.mSlop; if (abs >= i3 || abs2 >= i3) { if (abs > abs2) { if (f < 0.0f && (absoluteMovementFlags & 4) == 0) { return; } if (f > 0.0f && (absoluteMovementFlags & 8) == 0) { return; } } else { if (f2 < 0.0f && (absoluteMovementFlags & 1) == 0) { return; } if (f2 > 0.0f && (absoluteMovementFlags & 2) == 0) { return; } } this.mDy = 0.0f; this.mDx = 0.0f; this.mActivePointerId = motionEvent.getPointerId(0); select(findSwipedView, 1); } } View findChildView(MotionEvent motionEvent) { float x = motionEvent.getX(); float y = motionEvent.getY(); RecyclerView.ViewHolder viewHolder = this.mSelected; if (viewHolder != null) { View view = viewHolder.itemView; if (hitTest(view, x, y, this.mSelectedStartX + this.mDx, this.mSelectedStartY + this.mDy)) { return view; } } for (int size = this.mRecoverAnimations.size() - 1; size >= 0; size--) { RecoverAnimation recoverAnimation = this.mRecoverAnimations.get(size); View view2 = recoverAnimation.mViewHolder.itemView; if (hitTest(view2, x, y, recoverAnimation.mX, recoverAnimation.mY)) { return view2; } } return this.mRecyclerView.findChildViewUnder(x, y); } public void startDrag(RecyclerView.ViewHolder viewHolder) { if (!this.mCallback.hasDragFlag(this.mRecyclerView, viewHolder)) { Log.e(TAG, "Start drag has been called but dragging is not enabled"); return; } if (viewHolder.itemView.getParent() != this.mRecyclerView) { Log.e(TAG, "Start drag has been called with a view holder which is not a child of the RecyclerView which is controlled by this ItemTouchHelper."); return; } obtainVelocityTracker(); this.mDy = 0.0f; this.mDx = 0.0f; select(viewHolder, 2); } public void startSwipe(RecyclerView.ViewHolder viewHolder) { if (!this.mCallback.hasSwipeFlag(this.mRecyclerView, viewHolder)) { Log.e(TAG, "Start swipe has been called but swiping is not enabled"); return; } if (viewHolder.itemView.getParent() != this.mRecyclerView) { Log.e(TAG, "Start swipe has been called with a view holder which is not a child of the RecyclerView controlled by this ItemTouchHelper."); return; } obtainVelocityTracker(); this.mDy = 0.0f; this.mDx = 0.0f; select(viewHolder, 1); } RecoverAnimation findAnimation(MotionEvent motionEvent) { if (this.mRecoverAnimations.isEmpty()) { return null; } View findChildView = findChildView(motionEvent); for (int size = this.mRecoverAnimations.size() - 1; size >= 0; size--) { RecoverAnimation recoverAnimation = this.mRecoverAnimations.get(size); if (recoverAnimation.mViewHolder.itemView == findChildView) { return recoverAnimation; } } return null; } void updateDxDy(MotionEvent motionEvent, int i, int i2) { float x = motionEvent.getX(i2); float y = motionEvent.getY(i2); float f = x - this.mInitialTouchX; this.mDx = f; this.mDy = y - this.mInitialTouchY; if ((i & 4) == 0) { this.mDx = Math.max(0.0f, f); } if ((i & 8) == 0) { this.mDx = Math.min(0.0f, this.mDx); } if ((i & 1) == 0) { this.mDy = Math.max(0.0f, this.mDy); } if ((i & 2) == 0) { this.mDy = Math.min(0.0f, this.mDy); } } private int swipeIfNecessary(RecyclerView.ViewHolder viewHolder) { if (this.mActionState == 2) { return 0; } int movementFlags = this.mCallback.getMovementFlags(this.mRecyclerView, viewHolder); int convertToAbsoluteDirection = (this.mCallback.convertToAbsoluteDirection(movementFlags, ViewCompat.getLayoutDirection(this.mRecyclerView)) & 65280) >> 8; if (convertToAbsoluteDirection == 0) { return 0; } int i = (movementFlags & 65280) >> 8; if (Math.abs(this.mDx) > Math.abs(this.mDy)) { int checkHorizontalSwipe = checkHorizontalSwipe(viewHolder, convertToAbsoluteDirection); if (checkHorizontalSwipe > 0) { return (i & checkHorizontalSwipe) == 0 ? Callback.convertToRelativeDirection(checkHorizontalSwipe, ViewCompat.getLayoutDirection(this.mRecyclerView)) : checkHorizontalSwipe; } int checkVerticalSwipe = checkVerticalSwipe(viewHolder, convertToAbsoluteDirection); if (checkVerticalSwipe > 0) { return checkVerticalSwipe; } } else { int checkVerticalSwipe2 = checkVerticalSwipe(viewHolder, convertToAbsoluteDirection); if (checkVerticalSwipe2 > 0) { return checkVerticalSwipe2; } int checkHorizontalSwipe2 = checkHorizontalSwipe(viewHolder, convertToAbsoluteDirection); if (checkHorizontalSwipe2 > 0) { return (i & checkHorizontalSwipe2) == 0 ? Callback.convertToRelativeDirection(checkHorizontalSwipe2, ViewCompat.getLayoutDirection(this.mRecyclerView)) : checkHorizontalSwipe2; } } return 0; } private int checkHorizontalSwipe(RecyclerView.ViewHolder viewHolder, int i) { if ((i & 12) == 0) { return 0; } int i2 = this.mDx > 0.0f ? 8 : 4; VelocityTracker velocityTracker = this.mVelocityTracker; if (velocityTracker != null && this.mActivePointerId > -1) { velocityTracker.computeCurrentVelocity(1000, this.mCallback.getSwipeVelocityThreshold(this.mMaxSwipeVelocity)); float xVelocity = this.mVelocityTracker.getXVelocity(this.mActivePointerId); float yVelocity = this.mVelocityTracker.getYVelocity(this.mActivePointerId); int i3 = xVelocity <= 0.0f ? 4 : 8; float abs = Math.abs(xVelocity); if ((i3 & i) != 0 && i2 == i3 && abs >= this.mCallback.getSwipeEscapeVelocity(this.mSwipeEscapeVelocity) && abs > Math.abs(yVelocity)) { return i3; } } float width = this.mRecyclerView.getWidth() * this.mCallback.getSwipeThreshold(viewHolder); if ((i & i2) == 0 || Math.abs(this.mDx) <= width) { return 0; } return i2; } private int checkVerticalSwipe(RecyclerView.ViewHolder viewHolder, int i) { if ((i & 3) == 0) { return 0; } int i2 = this.mDy > 0.0f ? 2 : 1; VelocityTracker velocityTracker = this.mVelocityTracker; if (velocityTracker != null && this.mActivePointerId > -1) { velocityTracker.computeCurrentVelocity(1000, this.mCallback.getSwipeVelocityThreshold(this.mMaxSwipeVelocity)); float xVelocity = this.mVelocityTracker.getXVelocity(this.mActivePointerId); float yVelocity = this.mVelocityTracker.getYVelocity(this.mActivePointerId); int i3 = yVelocity <= 0.0f ? 1 : 2; float abs = Math.abs(yVelocity); if ((i3 & i) != 0 && i3 == i2 && abs >= this.mCallback.getSwipeEscapeVelocity(this.mSwipeEscapeVelocity) && abs > Math.abs(xVelocity)) { return i3; } } float height = this.mRecyclerView.getHeight() * this.mCallback.getSwipeThreshold(viewHolder); if ((i & i2) == 0 || Math.abs(this.mDy) <= height) { return 0; } return i2; } /* renamed from: androidx.recyclerview.widget.ItemTouchHelper$5, reason: invalid class name */ /* loaded from: classes2.dex */ class AnonymousClass5 implements RecyclerView.ChildDrawingOrderCallback { AnonymousClass5() { } @Override // androidx.recyclerview.widget.RecyclerView.ChildDrawingOrderCallback public int onGetChildDrawingOrder(int i, int i2) { if (ItemTouchHelper.this.mOverdrawChild == null) { return i2; } int i3 = ItemTouchHelper.this.mOverdrawChildPosition; if (i3 == -1) { i3 = ItemTouchHelper.this.mRecyclerView.indexOfChild(ItemTouchHelper.this.mOverdrawChild); ItemTouchHelper.this.mOverdrawChildPosition = i3; } return i2 == i + (-1) ? i3 : i2 < i3 ? i2 : i2 + 1; } } void removeChildDrawingOrderCallbackIfNecessary(View view) { if (view == this.mOverdrawChild) { this.mOverdrawChild = null; if (this.mChildDrawingOrderCallback != null) { this.mRecyclerView.setChildDrawingOrderCallback(null); } } } /* loaded from: classes2.dex */ public static abstract class Callback { private static final int ABS_HORIZONTAL_DIR_FLAGS = 789516; public static final int DEFAULT_DRAG_ANIMATION_DURATION = 200; public static final int DEFAULT_SWIPE_ANIMATION_DURATION = 250; private static final long DRAG_SCROLL_ACCELERATION_LIMIT_TIME_MS = 2000; static final int RELATIVE_DIR_FLAGS = 3158064; private static final Interpolator sDragScrollInterpolator = new Interpolator() { // from class: androidx.recyclerview.widget.ItemTouchHelper.Callback.1 @Override // android.animation.TimeInterpolator public float getInterpolation(float f) { return f * f * f * f * f; } }; private static final Interpolator sDragViewScrollCapInterpolator = new Interpolator() { // from class: androidx.recyclerview.widget.ItemTouchHelper.Callback.2 @Override // android.animation.TimeInterpolator public float getInterpolation(float f) { float f2 = f - 1.0f; return (f2 * f2 * f2 * f2 * f2) + 1.0f; } }; private int mCachedMaxScrollSpeed = -1; public static int convertToRelativeDirection(int i, int i2) { int i3; int i4 = i & ABS_HORIZONTAL_DIR_FLAGS; if (i4 == 0) { return i; } int i5 = i & (~i4); if (i2 == 0) { i3 = i4 << 2; } else { int i6 = i4 << 1; i5 |= (-789517) & i6; i3 = (i6 & ABS_HORIZONTAL_DIR_FLAGS) << 2; } return i5 | i3; } public static int makeFlag(int i, int i2) { return i2 << (i * 8); } public boolean canDropOver(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2) { return true; } public int convertToAbsoluteDirection(int i, int i2) { int i3; int i4 = i & RELATIVE_DIR_FLAGS; if (i4 == 0) { return i; } int i5 = i & (~i4); if (i2 == 0) { i3 = i4 >> 2; } else { int i6 = i4 >> 1; i5 |= (-3158065) & i6; i3 = (RELATIVE_DIR_FLAGS & i6) >> 2; } return i3 | i5; } public int getBoundingBoxMargin() { return 0; } public float getMoveThreshold(RecyclerView.ViewHolder viewHolder) { return 0.5f; } public abstract int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder); public float getSwipeEscapeVelocity(float f) { return f; } public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) { return 0.5f; } public float getSwipeVelocityThreshold(float f) { return f; } public boolean isItemViewSwipeEnabled() { return true; } public boolean isLongPressDragEnabled() { return true; } public abstract boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2); public abstract void onSwiped(RecyclerView.ViewHolder viewHolder, int i); public static ItemTouchUIUtil getDefaultUIUtil() { return ItemTouchUIUtilImpl.INSTANCE; } public static int makeMovementFlags(int i, int i2) { return makeFlag(2, i) | makeFlag(1, i2) | makeFlag(0, i2 | i); } final int getAbsoluteMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return convertToAbsoluteDirection(getMovementFlags(recyclerView, viewHolder), ViewCompat.getLayoutDirection(recyclerView)); } boolean hasDragFlag(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return (getAbsoluteMovementFlags(recyclerView, viewHolder) & ItemTouchHelper.ACTION_MODE_DRAG_MASK) != 0; } boolean hasSwipeFlag(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return (getAbsoluteMovementFlags(recyclerView, viewHolder) & 65280) != 0; } public RecyclerView.ViewHolder chooseDropTarget(RecyclerView.ViewHolder viewHolder, List list, int i, int i2) { int bottom; int abs; int top; int abs2; int left; int abs3; int right; int abs4; int width = viewHolder.itemView.getWidth() + i; int height = viewHolder.itemView.getHeight() + i2; int left2 = i - viewHolder.itemView.getLeft(); int top2 = i2 - viewHolder.itemView.getTop(); int size = list.size(); RecyclerView.ViewHolder viewHolder2 = null; int i3 = -1; for (int i4 = 0; i4 < size; i4++) { RecyclerView.ViewHolder viewHolder3 = list.get(i4); if (left2 > 0 && (right = viewHolder3.itemView.getRight() - width) < 0 && viewHolder3.itemView.getRight() > viewHolder.itemView.getRight() && (abs4 = Math.abs(right)) > i3) { viewHolder2 = viewHolder3; i3 = abs4; } if (left2 < 0 && (left = viewHolder3.itemView.getLeft() - i) > 0 && viewHolder3.itemView.getLeft() < viewHolder.itemView.getLeft() && (abs3 = Math.abs(left)) > i3) { viewHolder2 = viewHolder3; i3 = abs3; } if (top2 < 0 && (top = viewHolder3.itemView.getTop() - i2) > 0 && viewHolder3.itemView.getTop() < viewHolder.itemView.getTop() && (abs2 = Math.abs(top)) > i3) { viewHolder2 = viewHolder3; i3 = abs2; } if (top2 > 0 && (bottom = viewHolder3.itemView.getBottom() - height) < 0 && viewHolder3.itemView.getBottom() > viewHolder.itemView.getBottom() && (abs = Math.abs(bottom)) > i3) { viewHolder2 = viewHolder3; i3 = abs; } } return viewHolder2; } public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int i) { if (viewHolder != null) { ItemTouchUIUtilImpl.INSTANCE.onSelected(viewHolder.itemView); } } private int getMaxDragScroll(RecyclerView recyclerView) { if (this.mCachedMaxScrollSpeed == -1) { this.mCachedMaxScrollSpeed = recyclerView.getResources().getDimensionPixelSize(R.dimen.item_touch_helper_max_drag_scroll_per_frame); } return this.mCachedMaxScrollSpeed; } /* JADX WARN: Multi-variable type inference failed */ public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, int i, RecyclerView.ViewHolder viewHolder2, int i2, int i3, int i4) { RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); if (layoutManager instanceof ViewDropHandler) { ((ViewDropHandler) layoutManager).prepareForDrop(viewHolder.itemView, viewHolder2.itemView, i3, i4); return; } if (layoutManager.canScrollHorizontally()) { if (layoutManager.getDecoratedLeft(viewHolder2.itemView) <= recyclerView.getPaddingLeft()) { recyclerView.scrollToPosition(i2); } if (layoutManager.getDecoratedRight(viewHolder2.itemView) >= recyclerView.getWidth() - recyclerView.getPaddingRight()) { recyclerView.scrollToPosition(i2); } } if (layoutManager.canScrollVertically()) { if (layoutManager.getDecoratedTop(viewHolder2.itemView) <= recyclerView.getPaddingTop()) { recyclerView.scrollToPosition(i2); } if (layoutManager.getDecoratedBottom(viewHolder2.itemView) >= recyclerView.getHeight() - recyclerView.getPaddingBottom()) { recyclerView.scrollToPosition(i2); } } } void onDraw(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, List list, int i, float f, float f2) { int size = list.size(); for (int i2 = 0; i2 < size; i2++) { RecoverAnimation recoverAnimation = list.get(i2); recoverAnimation.update(); int save = canvas.save(); onChildDraw(canvas, recyclerView, recoverAnimation.mViewHolder, recoverAnimation.mX, recoverAnimation.mY, recoverAnimation.mActionState, false); canvas.restoreToCount(save); } if (viewHolder != null) { int save2 = canvas.save(); onChildDraw(canvas, recyclerView, viewHolder, f, f2, i, true); canvas.restoreToCount(save2); } } void onDrawOver(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, List list, int i, float f, float f2) { int size = list.size(); boolean z = false; for (int i2 = 0; i2 < size; i2++) { RecoverAnimation recoverAnimation = list.get(i2); int save = canvas.save(); onChildDrawOver(canvas, recyclerView, recoverAnimation.mViewHolder, recoverAnimation.mX, recoverAnimation.mY, recoverAnimation.mActionState, false); canvas.restoreToCount(save); } if (viewHolder != null) { int save2 = canvas.save(); onChildDrawOver(canvas, recyclerView, viewHolder, f, f2, i, true); canvas.restoreToCount(save2); } for (int i3 = size - 1; i3 >= 0; i3--) { RecoverAnimation recoverAnimation2 = list.get(i3); if (recoverAnimation2.mEnded && !recoverAnimation2.mIsPendingCleanup) { list.remove(i3); } else if (!recoverAnimation2.mEnded) { z = true; } } if (z) { recyclerView.invalidate(); } } public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { ItemTouchUIUtilImpl.INSTANCE.clearView(viewHolder.itemView); } public void onChildDraw(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float f, float f2, int i, boolean z) { ItemTouchUIUtilImpl.INSTANCE.onDraw(canvas, recyclerView, viewHolder.itemView, f, f2, i, z); } public void onChildDrawOver(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float f, float f2, int i, boolean z) { ItemTouchUIUtilImpl.INSTANCE.onDrawOver(canvas, recyclerView, viewHolder.itemView, f, f2, i, z); } public long getAnimationDuration(RecyclerView recyclerView, int i, float f, float f2) { RecyclerView.ItemAnimator itemAnimator = recyclerView.getItemAnimator(); if (itemAnimator == null) { return i == 8 ? 200L : 250L; } if (i == 8) { return itemAnimator.getMoveDuration(); } return itemAnimator.getRemoveDuration(); } public int interpolateOutOfBoundsScroll(RecyclerView recyclerView, int i, int i2, int i3, long j) { int signum = (int) (((int) (((int) Math.signum(i2)) * getMaxDragScroll(recyclerView) * sDragViewScrollCapInterpolator.getInterpolation(Math.min(1.0f, (Math.abs(i2) * 1.0f) / i)))) * sDragScrollInterpolator.getInterpolation(j <= 2000 ? ((float) j) / 2000.0f : 1.0f)); return signum == 0 ? i2 > 0 ? 1 : -1 : signum; } } /* loaded from: classes2.dex */ public static abstract class SimpleCallback extends Callback { private int mDefaultDragDirs; private int mDefaultSwipeDirs; public int getDragDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return this.mDefaultDragDirs; } public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return this.mDefaultSwipeDirs; } public void setDefaultDragDirs(int i) { this.mDefaultDragDirs = i; } public void setDefaultSwipeDirs(int i) { this.mDefaultSwipeDirs = i; } public SimpleCallback(int i, int i2) { this.mDefaultSwipeDirs = i2; this.mDefaultDragDirs = i; } @Override // androidx.recyclerview.widget.ItemTouchHelper.Callback public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return makeMovementFlags(getDragDirs(recyclerView, viewHolder), getSwipeDirs(recyclerView, viewHolder)); } } /* JADX INFO: Access modifiers changed from: private */ /* loaded from: classes2.dex */ public class ItemTouchHelperGestureListener extends GestureDetector.SimpleOnGestureListener { private boolean mShouldReactToLongPress = true; void doNotReactToLongPress() { this.mShouldReactToLongPress = false; } @Override // android.view.GestureDetector.SimpleOnGestureListener, android.view.GestureDetector.OnGestureListener public boolean onDown(MotionEvent motionEvent) { return true; } ItemTouchHelperGestureListener() { } @Override // android.view.GestureDetector.SimpleOnGestureListener, android.view.GestureDetector.OnGestureListener public void onLongPress(MotionEvent motionEvent) { View findChildView; RecyclerView.ViewHolder childViewHolder; if (this.mShouldReactToLongPress && (findChildView = ItemTouchHelper.this.findChildView(motionEvent)) != null && (childViewHolder = ItemTouchHelper.this.mRecyclerView.getChildViewHolder(findChildView)) != null && ItemTouchHelper.this.mCallback.hasDragFlag(ItemTouchHelper.this.mRecyclerView, childViewHolder) && motionEvent.getPointerId(0) == ItemTouchHelper.this.mActivePointerId) { int findPointerIndex = motionEvent.findPointerIndex(ItemTouchHelper.this.mActivePointerId); float x = motionEvent.getX(findPointerIndex); float y = motionEvent.getY(findPointerIndex); ItemTouchHelper.this.mInitialTouchX = x; ItemTouchHelper.this.mInitialTouchY = y; ItemTouchHelper itemTouchHelper = ItemTouchHelper.this; itemTouchHelper.mDy = 0.0f; itemTouchHelper.mDx = 0.0f; if (ItemTouchHelper.this.mCallback.isLongPressDragEnabled()) { ItemTouchHelper.this.select(childViewHolder, 2); } } } } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public static class RecoverAnimation implements Animator.AnimatorListener { final int mActionState; final int mAnimationType; private float mFraction; boolean mIsPendingCleanup; final float mStartDx; final float mStartDy; final float mTargetX; final float mTargetY; final ValueAnimator mValueAnimator; final RecyclerView.ViewHolder mViewHolder; float mX; float mY; boolean mOverridden = false; boolean mEnded = false; @Override // android.animation.Animator.AnimatorListener public void onAnimationRepeat(Animator animator) { } @Override // android.animation.Animator.AnimatorListener public void onAnimationStart(Animator animator) { } public void setFraction(float f) { this.mFraction = f; } RecoverAnimation(RecyclerView.ViewHolder viewHolder, int i, int i2, float f, float f2, float f3, float f4) { this.mActionState = i2; this.mAnimationType = i; this.mViewHolder = viewHolder; this.mStartDx = f; this.mStartDy = f2; this.mTargetX = f3; this.mTargetY = f4; ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f); this.mValueAnimator = ofFloat; ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: androidx.recyclerview.widget.ItemTouchHelper.RecoverAnimation.1 @Override // android.animation.ValueAnimator.AnimatorUpdateListener public void onAnimationUpdate(ValueAnimator valueAnimator) { RecoverAnimation.this.setFraction(valueAnimator.getAnimatedFraction()); } }); ofFloat.setTarget(viewHolder.itemView); ofFloat.addListener(this); setFraction(0.0f); } public void setDuration(long j) { this.mValueAnimator.setDuration(j); } public void start() { this.mViewHolder.setIsRecyclable(false); this.mValueAnimator.start(); } public void cancel() { this.mValueAnimator.cancel(); } public void update() { float f = this.mStartDx; float f2 = this.mTargetX; if (f == f2) { this.mX = this.mViewHolder.itemView.getTranslationX(); } else { this.mX = f + (this.mFraction * (f2 - f)); } float f3 = this.mStartDy; float f4 = this.mTargetY; if (f3 == f4) { this.mY = this.mViewHolder.itemView.getTranslationY(); } else { this.mY = f3 + (this.mFraction * (f4 - f3)); } } @Override // android.animation.Animator.AnimatorListener public void onAnimationEnd(Animator animator) { if (!this.mEnded) { this.mViewHolder.setIsRecyclable(true); } this.mEnded = true; } @Override // android.animation.Animator.AnimatorListener public void onAnimationCancel(Animator animator) { setFraction(1.0f); } } }