package androidx.recyclerview.widget; import android.content.Context; import android.util.DisplayMetrics; import android.view.View; import android.view.animation.DecelerateInterpolator; import android.widget.Scroller; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; public abstract class SnapHelper extends RecyclerView.OnFlingListener { public static final float MILLISECONDS_PER_INCH = 100.0f; private Scroller mGravityScroller; public RecyclerView mRecyclerView; private final RecyclerView.OnScrollListener mScrollListener = new AnonymousClass1(); /* renamed from: androidx.recyclerview.widget.SnapHelper$1 reason: invalid class name */ public class AnonymousClass1 extends RecyclerView.OnScrollListener { public boolean mScrolled = false; public AnonymousClass1() { } @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(); } } @Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener public void onScrolled(RecyclerView recyclerView, int i, int i2) { if (i != 0 || i2 != 0) { this.mScrolled = true; } } } /* renamed from: androidx.recyclerview.widget.SnapHelper$2 reason: invalid class name */ public class AnonymousClass2 extends LinearSmoothScroller { public AnonymousClass2(Context context) { super(context); } @Override // androidx.recyclerview.widget.LinearSmoothScroller public float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { return 100.0f / ((float) displayMetrics.densityDpi); } @Override // androidx.recyclerview.widget.LinearSmoothScroller, androidx.recyclerview.widget.RecyclerView.SmoothScroller public void onTargetFound(View view, RecyclerView.State state, RecyclerView.SmoothScroller.Action action) { SnapHelper snapHelper = SnapHelper.this; RecyclerView recyclerView = snapHelper.mRecyclerView; if (recyclerView != null) { int[] calculateDistanceToFinalSnap = snapHelper.calculateDistanceToFinalSnap(recyclerView.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); } } } } private void destroyCallbacks() { this.mRecyclerView.removeOnScrollListener(this.mScrollListener); this.mRecyclerView.setOnFlingListener(null); } private void setupCallbacks() throws IllegalStateException { if (this.mRecyclerView.getOnFlingListener() == null) { this.mRecyclerView.addOnScrollListener(this.mScrollListener); this.mRecyclerView.setOnFlingListener(this); return; } throw new IllegalStateException("An instance of OnFlingListener already set."); } private boolean snapFromFling(@NonNull 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; } public void attachToRecyclerView(@Nullable RecyclerView recyclerView) throws IllegalStateException { RecyclerView recyclerView2 = this.mRecyclerView; if (recyclerView2 != recyclerView) { if (recyclerView2 != null) { destroyCallbacks(); } this.mRecyclerView = recyclerView; if (recyclerView != null) { setupCallbacks(); this.mGravityScroller = new Scroller(this.mRecyclerView.getContext(), new DecelerateInterpolator()); snapToTargetExistingView(); } } } @Nullable public abstract int[] calculateDistanceToFinalSnap(@NonNull RecyclerView.LayoutManager layoutManager, @NonNull View view); 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()}; } @Nullable public RecyclerView.SmoothScroller createScroller(RecyclerView.LayoutManager layoutManager) { return createSnapScroller(layoutManager); } @Nullable @Deprecated public LinearSmoothScroller createSnapScroller(RecyclerView.LayoutManager layoutManager) { if (!(layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider)) { return null; } return new AnonymousClass2(this.mRecyclerView.getContext()); } @Nullable 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 snapToTargetExistingView() { RecyclerView.LayoutManager layoutManager; View findSnapView; RecyclerView recyclerView = this.mRecyclerView; if (recyclerView != null && (layoutManager = recyclerView.getLayoutManager()) != null && (findSnapView = findSnapView(layoutManager)) != null) { int[] calculateDistanceToFinalSnap = calculateDistanceToFinalSnap(layoutManager, findSnapView); if (calculateDistanceToFinalSnap[0] != 0 || calculateDistanceToFinalSnap[1] != 0) { this.mRecyclerView.smoothScrollBy(calculateDistanceToFinalSnap[0], calculateDistanceToFinalSnap[1]); } } } }