package androidx.recyclerview.widget; import android.view.View; import androidx.recyclerview.widget.RecyclerView; public class ScrollbarHelper { private ScrollbarHelper() { } public static int computeScrollExtent(RecyclerView.State state, OrientationHelper orientationHelper, View view, View view2, RecyclerView.LayoutManager layoutManager, boolean z2) { if (layoutManager.getChildCount() == 0 || state.getItemCount() == 0 || view == null || view2 == null) { return 0; } if (!z2) { return Math.abs(layoutManager.getPosition(view) - layoutManager.getPosition(view2)) + 1; } return Math.min(orientationHelper.getTotalSpace(), orientationHelper.getDecoratedEnd(view2) - orientationHelper.getDecoratedStart(view)); } public static int computeScrollOffset(RecyclerView.State state, OrientationHelper orientationHelper, View view, View view2, RecyclerView.LayoutManager layoutManager, boolean z2, boolean z3) { if (layoutManager.getChildCount() == 0 || state.getItemCount() == 0 || view == null || view2 == null) { return 0; } int max = z3 ? Math.max(0, (state.getItemCount() - Math.max(layoutManager.getPosition(view), layoutManager.getPosition(view2))) - 1) : Math.max(0, Math.min(layoutManager.getPosition(view), layoutManager.getPosition(view2))); if (!z2) { return max; } return Math.round((((float) max) * (((float) Math.abs(orientationHelper.getDecoratedEnd(view2) - orientationHelper.getDecoratedStart(view))) / ((float) (Math.abs(layoutManager.getPosition(view) - layoutManager.getPosition(view2)) + 1)))) + ((float) (orientationHelper.getStartAfterPadding() - orientationHelper.getDecoratedStart(view)))); } public static int computeScrollRange(RecyclerView.State state, OrientationHelper orientationHelper, View view, View view2, RecyclerView.LayoutManager layoutManager, boolean z2) { if (layoutManager.getChildCount() == 0 || state.getItemCount() == 0 || view == null || view2 == null) { return 0; } if (!z2) { return state.getItemCount(); } return (int) ((((float) (orientationHelper.getDecoratedEnd(view2) - orientationHelper.getDecoratedStart(view))) / ((float) (Math.abs(layoutManager.getPosition(view) - layoutManager.getPosition(view2)) + 1))) * ((float) state.getItemCount())); } }