mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-30 11:02:31 -06:00
161 lines
6.7 KiB
Java
161 lines
6.7 KiB
Java
|
package androidx.recyclerview.widget;
|
||
|
|
||
|
import android.graphics.PointF;
|
||
|
import android.view.View;
|
||
|
import androidx.recyclerview.widget.RecyclerView;
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
public class LinearSnapHelper extends SnapHelper {
|
||
|
private static final float INVALID_DISTANCE = 1.0f;
|
||
|
private OrientationHelper mHorizontalHelper;
|
||
|
private OrientationHelper mVerticalHelper;
|
||
|
|
||
|
@Override // androidx.recyclerview.widget.SnapHelper
|
||
|
public int[] calculateDistanceToFinalSnap(RecyclerView.LayoutManager layoutManager, View view) {
|
||
|
int[] iArr = new int[2];
|
||
|
if (layoutManager.canScrollHorizontally()) {
|
||
|
iArr[0] = distanceToCenter(view, getHorizontalHelper(layoutManager));
|
||
|
} else {
|
||
|
iArr[0] = 0;
|
||
|
}
|
||
|
if (layoutManager.canScrollVertically()) {
|
||
|
iArr[1] = distanceToCenter(view, getVerticalHelper(layoutManager));
|
||
|
} else {
|
||
|
iArr[1] = 0;
|
||
|
}
|
||
|
return iArr;
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // androidx.recyclerview.widget.SnapHelper
|
||
|
public int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int i, int i2) {
|
||
|
int itemCount;
|
||
|
View findSnapView;
|
||
|
int position;
|
||
|
int i3;
|
||
|
PointF computeScrollVectorForPosition;
|
||
|
int i4;
|
||
|
int i5;
|
||
|
if (!(layoutManager instanceof RecyclerView.SmoothScroller.ScrollVectorProvider) || (itemCount = layoutManager.getItemCount()) == 0 || (findSnapView = findSnapView(layoutManager)) == null || (position = layoutManager.getPosition(findSnapView)) == -1 || (computeScrollVectorForPosition = ((RecyclerView.SmoothScroller.ScrollVectorProvider) layoutManager).computeScrollVectorForPosition(itemCount - 1)) == null) {
|
||
|
return -1;
|
||
|
}
|
||
|
if (layoutManager.canScrollHorizontally()) {
|
||
|
i4 = estimateNextPositionDiffForFling(layoutManager, getHorizontalHelper(layoutManager), i, 0);
|
||
|
if (computeScrollVectorForPosition.x < 0.0f) {
|
||
|
i4 = -i4;
|
||
|
}
|
||
|
} else {
|
||
|
i4 = 0;
|
||
|
}
|
||
|
if (layoutManager.canScrollVertically()) {
|
||
|
i5 = estimateNextPositionDiffForFling(layoutManager, getVerticalHelper(layoutManager), 0, i2);
|
||
|
if (computeScrollVectorForPosition.y < 0.0f) {
|
||
|
i5 = -i5;
|
||
|
}
|
||
|
} else {
|
||
|
i5 = 0;
|
||
|
}
|
||
|
if (layoutManager.canScrollVertically()) {
|
||
|
i4 = i5;
|
||
|
}
|
||
|
if (i4 == 0) {
|
||
|
return -1;
|
||
|
}
|
||
|
int i6 = position + i4;
|
||
|
int i7 = i6 >= 0 ? i6 : 0;
|
||
|
return i7 >= itemCount ? i3 : i7;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.recyclerview.widget.SnapHelper
|
||
|
public View findSnapView(RecyclerView.LayoutManager layoutManager) {
|
||
|
if (layoutManager.canScrollVertically()) {
|
||
|
return findCenterView(layoutManager, getVerticalHelper(layoutManager));
|
||
|
}
|
||
|
if (layoutManager.canScrollHorizontally()) {
|
||
|
return findCenterView(layoutManager, getHorizontalHelper(layoutManager));
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
private int distanceToCenter(View view, OrientationHelper orientationHelper) {
|
||
|
return (orientationHelper.getDecoratedStart(view) + (orientationHelper.getDecoratedMeasurement(view) / 2)) - (orientationHelper.getStartAfterPadding() + (orientationHelper.getTotalSpace() / 2));
|
||
|
}
|
||
|
|
||
|
private int estimateNextPositionDiffForFling(RecyclerView.LayoutManager layoutManager, OrientationHelper orientationHelper, int i, int i2) {
|
||
|
int[] calculateScrollDistance = calculateScrollDistance(i, i2);
|
||
|
float computeDistancePerChild = computeDistancePerChild(layoutManager, orientationHelper);
|
||
|
if (computeDistancePerChild <= 0.0f) {
|
||
|
return 0;
|
||
|
}
|
||
|
return Math.round((Math.abs(calculateScrollDistance[0]) > Math.abs(calculateScrollDistance[1]) ? calculateScrollDistance[0] : calculateScrollDistance[1]) / computeDistancePerChild);
|
||
|
}
|
||
|
|
||
|
private View findCenterView(RecyclerView.LayoutManager layoutManager, OrientationHelper orientationHelper) {
|
||
|
int childCount = layoutManager.getChildCount();
|
||
|
View view = null;
|
||
|
if (childCount == 0) {
|
||
|
return null;
|
||
|
}
|
||
|
int startAfterPadding = orientationHelper.getStartAfterPadding() + (orientationHelper.getTotalSpace() / 2);
|
||
|
int i = Integer.MAX_VALUE;
|
||
|
for (int i2 = 0; i2 < childCount; i2++) {
|
||
|
View childAt = layoutManager.getChildAt(i2);
|
||
|
int abs = Math.abs((orientationHelper.getDecoratedStart(childAt) + (orientationHelper.getDecoratedMeasurement(childAt) / 2)) - startAfterPadding);
|
||
|
if (abs < i) {
|
||
|
view = childAt;
|
||
|
i = abs;
|
||
|
}
|
||
|
}
|
||
|
return view;
|
||
|
}
|
||
|
|
||
|
private float computeDistancePerChild(RecyclerView.LayoutManager layoutManager, OrientationHelper orientationHelper) {
|
||
|
int childCount = layoutManager.getChildCount();
|
||
|
if (childCount == 0) {
|
||
|
return 1.0f;
|
||
|
}
|
||
|
View view = null;
|
||
|
int i = Integer.MIN_VALUE;
|
||
|
int i2 = Integer.MAX_VALUE;
|
||
|
View view2 = null;
|
||
|
for (int i3 = 0; i3 < childCount; i3++) {
|
||
|
View childAt = layoutManager.getChildAt(i3);
|
||
|
int position = layoutManager.getPosition(childAt);
|
||
|
if (position != -1) {
|
||
|
if (position < i2) {
|
||
|
view = childAt;
|
||
|
i2 = position;
|
||
|
}
|
||
|
if (position > i) {
|
||
|
view2 = childAt;
|
||
|
i = position;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (view == null || view2 == null) {
|
||
|
return 1.0f;
|
||
|
}
|
||
|
int max = Math.max(orientationHelper.getDecoratedEnd(view), orientationHelper.getDecoratedEnd(view2)) - Math.min(orientationHelper.getDecoratedStart(view), orientationHelper.getDecoratedStart(view2));
|
||
|
if (max == 0) {
|
||
|
return 1.0f;
|
||
|
}
|
||
|
return (max * 1.0f) / ((i - i2) + 1);
|
||
|
}
|
||
|
|
||
|
private OrientationHelper getVerticalHelper(RecyclerView.LayoutManager layoutManager) {
|
||
|
OrientationHelper orientationHelper = this.mVerticalHelper;
|
||
|
if (orientationHelper == null || orientationHelper.mLayoutManager != layoutManager) {
|
||
|
this.mVerticalHelper = OrientationHelper.createVerticalHelper(layoutManager);
|
||
|
}
|
||
|
return this.mVerticalHelper;
|
||
|
}
|
||
|
|
||
|
private OrientationHelper getHorizontalHelper(RecyclerView.LayoutManager layoutManager) {
|
||
|
OrientationHelper orientationHelper = this.mHorizontalHelper;
|
||
|
if (orientationHelper == null || orientationHelper.mLayoutManager != layoutManager) {
|
||
|
this.mHorizontalHelper = OrientationHelper.createHorizontalHelper(layoutManager);
|
||
|
}
|
||
|
return this.mHorizontalHelper;
|
||
|
}
|
||
|
}
|