package androidx.recyclerview.widget; import android.util.DisplayMetrics; import android.view.View; import android.view.animation.DecelerateInterpolator; import android.widget.Scroller; import androidx.recyclerview.widget.RecyclerView; /* loaded from: classes2.dex */ public abstract class SnapHelper extends RecyclerView.OnFlingListener { static final float MILLISECONDS_PER_INCH = 100.0f; private Scroller mGravityScroller; RecyclerView mRecyclerView; private final RecyclerView.OnScrollListener mScrollListener = new RecyclerView.OnScrollListener() { // from class: androidx.recyclerview.widget.SnapHelper.1 boolean mScrolled = false; @Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener public void onScrolled(RecyclerView recyclerView, int i, int i2) { if (i == 0 && i2 == 0) { return; } this.mScrolled = true; } @Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener public void onScrollStateChanged(RecyclerView recyclerView, int i) { super.onScrollStateChanged(recyclerView, i); if (i == 0 && this.mScrolled) { this.mScrolled = false; SnapHelper.this.snapToTargetExistingView(); } } }; public abstract int[] calculateDistanceToFinalSnap(RecyclerView.LayoutManager layoutManager, View view); public abstract View findSnapView(RecyclerView.LayoutManager layoutManager); public abstract int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int i, int i2); @Override // androidx.recyclerview.widget.RecyclerView.OnFlingListener public boolean onFling(int i, int i2) { RecyclerView.LayoutManager layoutManager = this.mRecyclerView.getLayoutManager(); if (layoutManager == null || this.mRecyclerView.getAdapter() == null) { return false; } int minFlingVelocity = this.mRecyclerView.getMinFlingVelocity(); return (Math.abs(i2) > minFlingVelocity || Math.abs(i) > minFlingVelocity) && snapFromFling(layoutManager, i, i2); } public void attachToRecyclerView(RecyclerView recyclerView) throws IllegalStateException { RecyclerView recyclerView2 = this.mRecyclerView; if (recyclerView2 == recyclerView) { return; } if (recyclerView2 != null) { destroyCallbacks(); } this.mRecyclerView = recyclerView; if (recyclerView != null) { setupCallbacks(); this.mGravityScroller = new Scroller(this.mRecyclerView.getContext(), new DecelerateInterpolator()); snapToTargetExistingView(); } } private void setupCallbacks() throws IllegalStateException { if (this.mRecyclerView.getOnFlingListener() != null) { throw new IllegalStateException("An instance of OnFlingListener already set."); } this.mRecyclerView.addOnScrollListener(this.mScrollListener); this.mRecyclerView.setOnFlingListener(this); } private void destroyCallbacks() { this.mRecyclerView.removeOnScrollListener(this.mScrollListener); this.mRecyclerView.setOnFlingListener(null); } public int[] calculateScrollDistance(int i, int i2) { this.mGravityScroller.fling(0, 0, i, i2, Integer.MIN_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE, Integer.MAX_VALUE); return new int[]{this.mGravityScroller.getFinalX(), this.mGravityScroller.getFinalY()}; } private boolean snapFromFling(RecyclerView.LayoutManager layoutManager, int i, int i2) { RecyclerView.SmoothScroller createScroller; int findTargetSnapPosition; if (!(layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider) || (createScroller = createScroller(layoutManager)) == null || (findTargetSnapPosition = findTargetSnapPosition(layoutManager, i, i2)) == -1) { return false; } createScroller.setTargetPosition(findTargetSnapPosition); layoutManager.startSmoothScroll(createScroller); return true; } void snapToTargetExistingView() { RecyclerView.LayoutManager layoutManager; View findSnapView; RecyclerView recyclerView = this.mRecyclerView; if (recyclerView == null || (layoutManager = recyclerView.getLayoutManager()) == null || (findSnapView = findSnapView(layoutManager)) == null) { return; } int[] calculateDistanceToFinalSnap = calculateDistanceToFinalSnap(layoutManager, findSnapView); int i = calculateDistanceToFinalSnap[0]; if (i == 0 && calculateDistanceToFinalSnap[1] == 0) { return; } this.mRecyclerView.smoothScrollBy(i, calculateDistanceToFinalSnap[1]); } protected RecyclerView.SmoothScroller createScroller(RecyclerView.LayoutManager layoutManager) { return createSnapScroller(layoutManager); } @Deprecated protected LinearSmoothScroller createSnapScroller(RecyclerView.LayoutManager layoutManager) { if (layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider) { return new LinearSmoothScroller(this.mRecyclerView.getContext()) { // from class: androidx.recyclerview.widget.SnapHelper.2 @Override // androidx.recyclerview.widget.LinearSmoothScroller, androidx.recyclerview.widget.RecyclerView.SmoothScroller protected void onTargetFound(View view, RecyclerView.State state, RecyclerView.SmoothScroller.Action action) { if (SnapHelper.this.mRecyclerView == null) { return; } SnapHelper snapHelper = SnapHelper.this; int[] calculateDistanceToFinalSnap = snapHelper.calculateDistanceToFinalSnap(snapHelper.mRecyclerView.getLayoutManager(), view); int i = calculateDistanceToFinalSnap[0]; int i2 = calculateDistanceToFinalSnap[1]; int calculateTimeForDeceleration = calculateTimeForDeceleration(Math.max(Math.abs(i), Math.abs(i2))); if (calculateTimeForDeceleration > 0) { action.update(i, i2, calculateTimeForDeceleration, this.mDecelerateInterpolator); } } @Override // androidx.recyclerview.widget.LinearSmoothScroller protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { return 100.0f / displayMetrics.densityDpi; } }; } return null; } }