ADD week 5

This commit is contained in:
2025-03-31 16:33:42 +02:00
parent 86f265f22d
commit bf645048e6
4927 changed files with 544053 additions and 0 deletions

View File

@ -0,0 +1,110 @@
package androidx.viewpager2.widget;
import android.animation.LayoutTransition;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
/* loaded from: classes.dex */
final class AnimateLayoutChangeDetector {
private static final ViewGroup.MarginLayoutParams ZERO_MARGIN_LAYOUT_PARAMS;
private LinearLayoutManager mLayoutManager;
static {
ViewGroup.MarginLayoutParams marginLayoutParams = new ViewGroup.MarginLayoutParams(-1, -1);
ZERO_MARGIN_LAYOUT_PARAMS = marginLayoutParams;
marginLayoutParams.setMargins(0, 0, 0, 0);
}
AnimateLayoutChangeDetector(LinearLayoutManager linearLayoutManager) {
this.mLayoutManager = linearLayoutManager;
}
boolean mayHaveInterferingAnimations() {
return (!arePagesLaidOutContiguously() || this.mLayoutManager.getChildCount() <= 1) && hasRunningChangingLayoutTransition();
}
private boolean arePagesLaidOutContiguously() {
int top;
int i;
int bottom;
int i2;
int childCount = this.mLayoutManager.getChildCount();
if (childCount == 0) {
return true;
}
boolean z = this.mLayoutManager.getOrientation() == 0;
int[][] iArr = (int[][]) Array.newInstance((Class<?>) Integer.TYPE, childCount, 2);
for (int i3 = 0; i3 < childCount; i3++) {
View childAt = this.mLayoutManager.getChildAt(i3);
if (childAt == null) {
throw new IllegalStateException("null view contained in the view hierarchy");
}
ViewGroup.LayoutParams layoutParams = childAt.getLayoutParams();
ViewGroup.MarginLayoutParams marginLayoutParams = layoutParams instanceof ViewGroup.MarginLayoutParams ? (ViewGroup.MarginLayoutParams) layoutParams : ZERO_MARGIN_LAYOUT_PARAMS;
int[] iArr2 = iArr[i3];
if (z) {
top = childAt.getLeft();
i = marginLayoutParams.leftMargin;
} else {
top = childAt.getTop();
i = marginLayoutParams.topMargin;
}
iArr2[0] = top - i;
int[] iArr3 = iArr[i3];
if (z) {
bottom = childAt.getRight();
i2 = marginLayoutParams.rightMargin;
} else {
bottom = childAt.getBottom();
i2 = marginLayoutParams.bottomMargin;
}
iArr3[1] = bottom + i2;
}
Arrays.sort(iArr, new Comparator<int[]>() { // from class: androidx.viewpager2.widget.AnimateLayoutChangeDetector.1
@Override // java.util.Comparator
public int compare(int[] iArr4, int[] iArr5) {
return iArr4[0] - iArr5[0];
}
});
for (int i4 = 1; i4 < childCount; i4++) {
if (iArr[i4 - 1][1] != iArr[i4][0]) {
return false;
}
}
int[] iArr4 = iArr[0];
int i5 = iArr4[1];
int i6 = iArr4[0];
return i6 <= 0 && iArr[childCount - 1][1] >= i5 - i6;
}
private boolean hasRunningChangingLayoutTransition() {
int childCount = this.mLayoutManager.getChildCount();
for (int i = 0; i < childCount; i++) {
if (hasRunningChangingLayoutTransition(this.mLayoutManager.getChildAt(i))) {
return true;
}
}
return false;
}
private static boolean hasRunningChangingLayoutTransition(View view) {
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
LayoutTransition layoutTransition = viewGroup.getLayoutTransition();
if (layoutTransition != null && layoutTransition.isChangingLayout()) {
return true;
}
int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
if (hasRunningChangingLayoutTransition(viewGroup.getChildAt(i))) {
return true;
}
}
}
return false;
}
}

View File

@ -0,0 +1,64 @@
package androidx.viewpager2.widget;
import androidx.viewpager2.widget.ViewPager2;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
final class CompositeOnPageChangeCallback extends ViewPager2.OnPageChangeCallback {
private final List<ViewPager2.OnPageChangeCallback> mCallbacks;
CompositeOnPageChangeCallback(int i) {
this.mCallbacks = new ArrayList(i);
}
void addOnPageChangeCallback(ViewPager2.OnPageChangeCallback onPageChangeCallback) {
this.mCallbacks.add(onPageChangeCallback);
}
void removeOnPageChangeCallback(ViewPager2.OnPageChangeCallback onPageChangeCallback) {
this.mCallbacks.remove(onPageChangeCallback);
}
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
public void onPageScrolled(int i, float f, int i2) {
try {
Iterator<ViewPager2.OnPageChangeCallback> it = this.mCallbacks.iterator();
while (it.hasNext()) {
it.next().onPageScrolled(i, f, i2);
}
} catch (ConcurrentModificationException e) {
throwCallbackListModifiedWhileInUse(e);
}
}
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
public void onPageSelected(int i) {
try {
Iterator<ViewPager2.OnPageChangeCallback> it = this.mCallbacks.iterator();
while (it.hasNext()) {
it.next().onPageSelected(i);
}
} catch (ConcurrentModificationException e) {
throwCallbackListModifiedWhileInUse(e);
}
}
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
public void onPageScrollStateChanged(int i) {
try {
Iterator<ViewPager2.OnPageChangeCallback> it = this.mCallbacks.iterator();
while (it.hasNext()) {
it.next().onPageScrollStateChanged(i);
}
} catch (ConcurrentModificationException e) {
throwCallbackListModifiedWhileInUse(e);
}
}
private void throwCallbackListModifiedWhileInUse(ConcurrentModificationException concurrentModificationException) {
throw new IllegalStateException("Adding and removing callbacks during dispatch to callbacks is not supported", concurrentModificationException);
}
}

View File

@ -0,0 +1,28 @@
package androidx.viewpager2.widget;
import android.view.View;
import androidx.viewpager2.widget.ViewPager2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
public final class CompositePageTransformer implements ViewPager2.PageTransformer {
private final List<ViewPager2.PageTransformer> mTransformers = new ArrayList();
public void addTransformer(ViewPager2.PageTransformer pageTransformer) {
this.mTransformers.add(pageTransformer);
}
public void removeTransformer(ViewPager2.PageTransformer pageTransformer) {
this.mTransformers.remove(pageTransformer);
}
@Override // androidx.viewpager2.widget.ViewPager2.PageTransformer
public void transformPage(View view, float f) {
Iterator<ViewPager2.PageTransformer> it = this.mTransformers.iterator();
while (it.hasNext()) {
it.next().transformPage(view, f);
}
}
}

View File

@ -0,0 +1,94 @@
package androidx.viewpager2.widget;
import android.os.SystemClock;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.ViewConfiguration;
import androidx.recyclerview.widget.RecyclerView;
/* loaded from: classes.dex */
final class FakeDrag {
private int mActualDraggedDistance;
private long mFakeDragBeginTime;
private int mMaximumVelocity;
private final RecyclerView mRecyclerView;
private float mRequestedDragDistance;
private final ScrollEventAdapter mScrollEventAdapter;
private VelocityTracker mVelocityTracker;
private final ViewPager2 mViewPager;
FakeDrag(ViewPager2 viewPager2, ScrollEventAdapter scrollEventAdapter, RecyclerView recyclerView) {
this.mViewPager = viewPager2;
this.mScrollEventAdapter = scrollEventAdapter;
this.mRecyclerView = recyclerView;
}
boolean isFakeDragging() {
return this.mScrollEventAdapter.isFakeDragging();
}
boolean beginFakeDrag() {
if (this.mScrollEventAdapter.isDragging()) {
return false;
}
this.mActualDraggedDistance = 0;
this.mRequestedDragDistance = 0;
this.mFakeDragBeginTime = SystemClock.uptimeMillis();
beginFakeVelocityTracker();
this.mScrollEventAdapter.notifyBeginFakeDrag();
if (!this.mScrollEventAdapter.isIdle()) {
this.mRecyclerView.stopScroll();
}
addFakeMotionEvent(this.mFakeDragBeginTime, 0, 0.0f, 0.0f);
return true;
}
boolean fakeDragBy(float f) {
if (!this.mScrollEventAdapter.isFakeDragging()) {
return false;
}
float f2 = this.mRequestedDragDistance - f;
this.mRequestedDragDistance = f2;
int round = Math.round(f2 - this.mActualDraggedDistance);
this.mActualDraggedDistance += round;
long uptimeMillis = SystemClock.uptimeMillis();
boolean z = this.mViewPager.getOrientation() == 0;
int i = z ? round : 0;
int i2 = z ? 0 : round;
float f3 = z ? this.mRequestedDragDistance : 0.0f;
float f4 = z ? 0.0f : this.mRequestedDragDistance;
this.mRecyclerView.scrollBy(i, i2);
addFakeMotionEvent(uptimeMillis, 2, f3, f4);
return true;
}
boolean endFakeDrag() {
if (!this.mScrollEventAdapter.isFakeDragging()) {
return false;
}
this.mScrollEventAdapter.notifyEndFakeDrag();
VelocityTracker velocityTracker = this.mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000, this.mMaximumVelocity);
if (this.mRecyclerView.fling((int) velocityTracker.getXVelocity(), (int) velocityTracker.getYVelocity())) {
return true;
}
this.mViewPager.snapToPage();
return true;
}
private void beginFakeVelocityTracker() {
VelocityTracker velocityTracker = this.mVelocityTracker;
if (velocityTracker == null) {
this.mVelocityTracker = VelocityTracker.obtain();
this.mMaximumVelocity = ViewConfiguration.get(this.mViewPager.getContext()).getScaledMaximumFlingVelocity();
} else {
velocityTracker.clear();
}
}
private void addFakeMotionEvent(long j, int i, float f, float f2) {
MotionEvent obtain = MotionEvent.obtain(this.mFakeDragBeginTime, j, i, f, f2, 0);
this.mVelocityTracker.addMovement(obtain);
obtain.recycle();
}
}

View File

@ -0,0 +1,40 @@
package androidx.viewpager2.widget;
import android.view.View;
import android.view.ViewParent;
import androidx.core.util.Preconditions;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
/* loaded from: classes.dex */
public final class MarginPageTransformer implements ViewPager2.PageTransformer {
private final int mMarginPx;
public MarginPageTransformer(int i) {
Preconditions.checkArgumentNonnegative(i, "Margin must be non-negative");
this.mMarginPx = i;
}
@Override // androidx.viewpager2.widget.ViewPager2.PageTransformer
public void transformPage(View view, float f) {
ViewPager2 requireViewPager = requireViewPager(view);
float f2 = this.mMarginPx * f;
if (requireViewPager.getOrientation() == 0) {
if (requireViewPager.isRtl()) {
f2 = -f2;
}
view.setTranslationX(f2);
return;
}
view.setTranslationY(f2);
}
private ViewPager2 requireViewPager(View view) {
ViewParent parent = view.getParent();
ViewParent parent2 = parent.getParent();
if ((parent instanceof RecyclerView) && (parent2 instanceof ViewPager2)) {
return (ViewPager2) parent2;
}
throw new IllegalStateException("Expected the page view to be managed by a ViewPager2 instance.");
}
}

View File

@ -0,0 +1,47 @@
package androidx.viewpager2.widget;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.viewpager2.widget.ViewPager2;
import java.util.Locale;
/* loaded from: classes.dex */
final class PageTransformerAdapter extends ViewPager2.OnPageChangeCallback {
private final LinearLayoutManager mLayoutManager;
private ViewPager2.PageTransformer mPageTransformer;
ViewPager2.PageTransformer getPageTransformer() {
return this.mPageTransformer;
}
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
public void onPageScrollStateChanged(int i) {
}
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
public void onPageSelected(int i) {
}
void setPageTransformer(ViewPager2.PageTransformer pageTransformer) {
this.mPageTransformer = pageTransformer;
}
PageTransformerAdapter(LinearLayoutManager linearLayoutManager) {
this.mLayoutManager = linearLayoutManager;
}
@Override // androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
public void onPageScrolled(int i, float f, int i2) {
if (this.mPageTransformer == null) {
return;
}
float f2 = -f;
for (int i3 = 0; i3 < this.mLayoutManager.getChildCount(); i3++) {
View childAt = this.mLayoutManager.getChildAt(i3);
if (childAt == null) {
throw new IllegalStateException(String.format(Locale.US, "LayoutManager returned a null child at pos %d/%d while transforming pages", Integer.valueOf(i3), Integer.valueOf(this.mLayoutManager.getChildCount())));
}
this.mPageTransformer.transformPage(childAt, (this.mLayoutManager.getPosition(childAt) - i) + f2);
}
}
}

View File

@ -0,0 +1,353 @@
package androidx.viewpager2.widget;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import java.util.Locale;
/* loaded from: classes.dex */
final class ScrollEventAdapter extends RecyclerView.OnScrollListener {
private static final int NO_POSITION = -1;
private static final int STATE_IDLE = 0;
private static final int STATE_IN_PROGRESS_FAKE_DRAG = 4;
private static final int STATE_IN_PROGRESS_IMMEDIATE_SCROLL = 3;
private static final int STATE_IN_PROGRESS_MANUAL_DRAG = 1;
private static final int STATE_IN_PROGRESS_SMOOTH_SCROLL = 2;
private int mAdapterState;
private ViewPager2.OnPageChangeCallback mCallback;
private boolean mDataSetChangeHappened;
private boolean mDispatchSelected;
private int mDragStartPosition;
private boolean mFakeDragging;
private final LinearLayoutManager mLayoutManager;
private final RecyclerView mRecyclerView;
private boolean mScrollHappened;
private int mScrollState;
private ScrollEventValues mScrollValues;
private int mTarget;
private final ViewPager2 mViewPager;
private boolean isInAnyDraggingState() {
int i = this.mAdapterState;
return i == 1 || i == 4;
}
int getScrollState() {
return this.mScrollState;
}
boolean isDragging() {
return this.mScrollState == 1;
}
boolean isFakeDragging() {
return this.mFakeDragging;
}
boolean isIdle() {
return this.mScrollState == 0;
}
void notifyDataSetChangeHappened() {
this.mDataSetChangeHappened = true;
}
void setOnPageChangeCallback(ViewPager2.OnPageChangeCallback onPageChangeCallback) {
this.mCallback = onPageChangeCallback;
}
ScrollEventAdapter(ViewPager2 viewPager2) {
this.mViewPager = viewPager2;
RecyclerView recyclerView = viewPager2.mRecyclerView;
this.mRecyclerView = recyclerView;
this.mLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
this.mScrollValues = new ScrollEventValues();
resetState();
}
private void resetState() {
this.mAdapterState = 0;
this.mScrollState = 0;
this.mScrollValues.reset();
this.mDragStartPosition = -1;
this.mTarget = -1;
this.mDispatchSelected = false;
this.mScrollHappened = false;
this.mFakeDragging = false;
this.mDataSetChangeHappened = false;
}
@Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener
public void onScrollStateChanged(RecyclerView recyclerView, int i) {
if ((this.mAdapterState != 1 || this.mScrollState != 1) && i == 1) {
startDrag(false);
return;
}
if (isInAnyDraggingState() && i == 2) {
if (this.mScrollHappened) {
dispatchStateChanged(2);
this.mDispatchSelected = true;
return;
}
return;
}
if (isInAnyDraggingState() && i == 0) {
updateScrollEventValues();
if (!this.mScrollHappened) {
if (this.mScrollValues.mPosition != -1) {
dispatchScrolled(this.mScrollValues.mPosition, 0.0f, 0);
}
} else if (this.mScrollValues.mOffsetPx == 0) {
if (this.mDragStartPosition != this.mScrollValues.mPosition) {
dispatchSelected(this.mScrollValues.mPosition);
}
}
dispatchStateChanged(0);
resetState();
}
if (this.mAdapterState == 2 && i == 0 && this.mDataSetChangeHappened) {
updateScrollEventValues();
if (this.mScrollValues.mOffsetPx == 0) {
if (this.mTarget != this.mScrollValues.mPosition) {
dispatchSelected(this.mScrollValues.mPosition == -1 ? 0 : this.mScrollValues.mPosition);
}
dispatchStateChanged(0);
resetState();
}
}
}
/* JADX WARN: Code restructure failed: missing block: B:9:0x001d, code lost:
if ((r5 < 0) == r3.mViewPager.isRtl()) goto L12;
*/
/* JADX WARN: Removed duplicated region for block: B:14:0x0035 */
@Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public void onScrolled(androidx.recyclerview.widget.RecyclerView r4, int r5, int r6) {
/*
r3 = this;
r4 = 1
r3.mScrollHappened = r4
r3.updateScrollEventValues()
boolean r0 = r3.mDispatchSelected
r1 = -1
r2 = 0
if (r0 == 0) goto L39
r3.mDispatchSelected = r2
if (r6 > 0) goto L1f
if (r6 != 0) goto L2b
if (r5 >= 0) goto L16
r5 = 1
goto L17
L16:
r5 = 0
L17:
androidx.viewpager2.widget.ViewPager2 r6 = r3.mViewPager
boolean r6 = r6.isRtl()
if (r5 != r6) goto L2b
L1f:
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mOffsetPx
if (r5 == 0) goto L2b
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mPosition
int r5 = r5 + r4
goto L2f
L2b:
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mPosition
L2f:
r3.mTarget = r5
int r6 = r3.mDragStartPosition
if (r6 == r5) goto L47
r3.dispatchSelected(r5)
goto L47
L39:
int r5 = r3.mAdapterState
if (r5 != 0) goto L47
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mPosition
if (r5 != r1) goto L44
r5 = 0
L44:
r3.dispatchSelected(r5)
L47:
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mPosition
if (r5 != r1) goto L4f
r5 = 0
goto L53
L4f:
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mPosition
L53:
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r6 = r3.mScrollValues
float r6 = r6.mOffset
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r0 = r3.mScrollValues
int r0 = r0.mOffsetPx
r3.dispatchScrolled(r5, r6, r0)
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mPosition
int r6 = r3.mTarget
if (r5 == r6) goto L68
if (r6 != r1) goto L78
L68:
androidx.viewpager2.widget.ScrollEventAdapter$ScrollEventValues r5 = r3.mScrollValues
int r5 = r5.mOffsetPx
if (r5 != 0) goto L78
int r5 = r3.mScrollState
if (r5 == r4) goto L78
r3.dispatchStateChanged(r2)
r3.resetState()
L78:
return
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.viewpager2.widget.ScrollEventAdapter.onScrolled(androidx.recyclerview.widget.RecyclerView, int, int):void");
}
private void updateScrollEventValues() {
int top;
ScrollEventValues scrollEventValues = this.mScrollValues;
scrollEventValues.mPosition = this.mLayoutManager.findFirstVisibleItemPosition();
if (scrollEventValues.mPosition == -1) {
scrollEventValues.reset();
return;
}
View findViewByPosition = this.mLayoutManager.findViewByPosition(scrollEventValues.mPosition);
if (findViewByPosition == null) {
scrollEventValues.reset();
return;
}
int leftDecorationWidth = this.mLayoutManager.getLeftDecorationWidth(findViewByPosition);
int rightDecorationWidth = this.mLayoutManager.getRightDecorationWidth(findViewByPosition);
int topDecorationHeight = this.mLayoutManager.getTopDecorationHeight(findViewByPosition);
int bottomDecorationHeight = this.mLayoutManager.getBottomDecorationHeight(findViewByPosition);
ViewGroup.LayoutParams layoutParams = findViewByPosition.getLayoutParams();
if (layoutParams instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) layoutParams;
leftDecorationWidth += marginLayoutParams.leftMargin;
rightDecorationWidth += marginLayoutParams.rightMargin;
topDecorationHeight += marginLayoutParams.topMargin;
bottomDecorationHeight += marginLayoutParams.bottomMargin;
}
int height = findViewByPosition.getHeight() + topDecorationHeight + bottomDecorationHeight;
int width = findViewByPosition.getWidth() + leftDecorationWidth + rightDecorationWidth;
if (this.mLayoutManager.getOrientation() == 0) {
top = (findViewByPosition.getLeft() - leftDecorationWidth) - this.mRecyclerView.getPaddingLeft();
if (this.mViewPager.isRtl()) {
top = -top;
}
height = width;
} else {
top = (findViewByPosition.getTop() - topDecorationHeight) - this.mRecyclerView.getPaddingTop();
}
scrollEventValues.mOffsetPx = -top;
if (scrollEventValues.mOffsetPx < 0) {
if (new AnimateLayoutChangeDetector(this.mLayoutManager).mayHaveInterferingAnimations()) {
throw new IllegalStateException("Page(s) contain a ViewGroup with a LayoutTransition (or animateLayoutChanges=\"true\"), which interferes with the scrolling animation. Make sure to call getLayoutTransition().setAnimateParentHierarchy(false) on all ViewGroups with a LayoutTransition before an animation is started.");
}
throw new IllegalStateException(String.format(Locale.US, "Page can only be offset by a positive amount, not by %d", Integer.valueOf(scrollEventValues.mOffsetPx)));
}
scrollEventValues.mOffset = height == 0 ? 0.0f : scrollEventValues.mOffsetPx / height;
}
private void startDrag(boolean z) {
this.mFakeDragging = z;
this.mAdapterState = z ? 4 : 1;
int i = this.mTarget;
if (i != -1) {
this.mDragStartPosition = i;
this.mTarget = -1;
} else if (this.mDragStartPosition == -1) {
this.mDragStartPosition = getPosition();
}
dispatchStateChanged(1);
}
void notifyProgrammaticScroll(int i, boolean z) {
this.mAdapterState = z ? 2 : 3;
this.mFakeDragging = false;
boolean z2 = this.mTarget != i;
this.mTarget = i;
dispatchStateChanged(2);
if (z2) {
dispatchSelected(i);
}
}
void notifyBeginFakeDrag() {
this.mAdapterState = 4;
startDrag(true);
}
void notifyEndFakeDrag() {
if (!isDragging() || this.mFakeDragging) {
this.mFakeDragging = false;
updateScrollEventValues();
if (this.mScrollValues.mOffsetPx == 0) {
if (this.mScrollValues.mPosition != this.mDragStartPosition) {
dispatchSelected(this.mScrollValues.mPosition);
}
dispatchStateChanged(0);
resetState();
return;
}
dispatchStateChanged(2);
}
}
double getRelativeScrollPosition() {
updateScrollEventValues();
return this.mScrollValues.mPosition + this.mScrollValues.mOffset;
}
private void dispatchStateChanged(int i) {
if ((this.mAdapterState == 3 && this.mScrollState == 0) || this.mScrollState == i) {
return;
}
this.mScrollState = i;
ViewPager2.OnPageChangeCallback onPageChangeCallback = this.mCallback;
if (onPageChangeCallback != null) {
onPageChangeCallback.onPageScrollStateChanged(i);
}
}
private void dispatchSelected(int i) {
ViewPager2.OnPageChangeCallback onPageChangeCallback = this.mCallback;
if (onPageChangeCallback != null) {
onPageChangeCallback.onPageSelected(i);
}
}
private void dispatchScrolled(int i, float f, int i2) {
ViewPager2.OnPageChangeCallback onPageChangeCallback = this.mCallback;
if (onPageChangeCallback != null) {
onPageChangeCallback.onPageScrolled(i, f, i2);
}
}
private int getPosition() {
return this.mLayoutManager.findFirstVisibleItemPosition();
}
private static final class ScrollEventValues {
float mOffset;
int mOffsetPx;
int mPosition;
void reset() {
this.mPosition = -1;
this.mOffset = 0.0f;
this.mOffsetPx = 0;
}
ScrollEventValues() {
}
}
}

File diff suppressed because it is too large Load Diff