CrackMe.apk
Download file
package androidx.core.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.FocusFinder;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AnimationUtils;
import android.widget.EdgeEffect;
import android.widget.FrameLayout;
import android.widget.OverScroller;
import android.widget.ScrollView;
import androidx.core.R;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.NestedScrollingChild3;
import androidx.core.view.NestedScrollingChildHelper;
import androidx.core.view.NestedScrollingParent3;
import androidx.core.view.NestedScrollingParentHelper;
import androidx.core.view.ScrollingView;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.accessibility.AccessibilityRecordCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import com.google.android.exoplayer2.extractor.ts.TsExtractor;
import java.util.ArrayList;
public class NestedScrollView extends FrameLayout implements NestedScrollingParent3, NestedScrollingChild3, ScrollingView {
private static final AccessibilityDelegate ACCESSIBILITY_DELEGATE = new AccessibilityDelegate();
static final int ANIMATED_SCROLL_GAP = 250;
private static final int DEFAULT_SMOOTH_SCROLL_DURATION = 250;
private static final int INVALID_POINTER = -1;
static final float MAX_SCROLL_FACTOR = 0.5f;
private static final int[] SCROLLVIEW_STYLEABLE = {16843130};
private static final String TAG = "NestedScrollView";
private int mActivePointerId;
private final NestedScrollingChildHelper mChildHelper;
private View mChildToScrollTo;
public EdgeEffect mEdgeGlowBottom;
public EdgeEffect mEdgeGlowTop;
private boolean mFillViewport;
private boolean mIsBeingDragged;
private boolean mIsLaidOut;
private boolean mIsLayoutDirty;
private int mLastMotionY;
private long mLastScroll;
private int mLastScrollerY;
private int mMaximumVelocity;
private int mMinimumVelocity;
private int mNestedYOffset;
private OnScrollChangeListener mOnScrollChangeListener;
private final NestedScrollingParentHelper mParentHelper;
private SavedState mSavedState;
private final int[] mScrollConsumed;
private final int[] mScrollOffset;
private OverScroller mScroller;
private boolean mSmoothScrollingEnabled;
private final Rect mTempRect;
private int mTouchSlop;
private VelocityTracker mVelocityTracker;
private float mVerticalScrollFactor;
public interface OnScrollChangeListener {
void onScrollChange(NestedScrollView nestedScrollView, int i, int i2, int i3, int i4);
}
private static int clamp(int i, int i2, int i3) {
if (i2 >= i3 || i < 0) {
return 0;
}
return i2 + i > i3 ? i3 - i2 : i;
}
public boolean onStartNestedScroll(View view, View view2, int i, int i2) {
return (i & 2) != 0;
}
public boolean shouldDelayChildPressedState() {
return true;
}
public NestedScrollView(Context context) {
this(context, (AttributeSet) null);
}
public NestedScrollView(Context context, AttributeSet attributeSet) {
this(context, attributeSet, R.attr.nestedScrollViewStyle);
}
public NestedScrollView(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
this.mTempRect = new Rect();
this.mIsLayoutDirty = true;
this.mIsLaidOut = false;
this.mChildToScrollTo = null;
this.mIsBeingDragged = false;
this.mSmoothScrollingEnabled = true;
this.mActivePointerId = -1;
this.mScrollOffset = new int[2];
this.mScrollConsumed = new int[2];
this.mEdgeGlowTop = EdgeEffectCompat.create(context, attributeSet);
this.mEdgeGlowBottom = EdgeEffectCompat.create(context, attributeSet);
initScrollView();
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, SCROLLVIEW_STYLEABLE, i, 0);
setFillViewport(obtainStyledAttributes.getBoolean(0, false));
obtainStyledAttributes.recycle();
this.mParentHelper = new NestedScrollingParentHelper(this);
this.mChildHelper = new NestedScrollingChildHelper(this);
setNestedScrollingEnabled(true);
ViewCompat.setAccessibilityDelegate(this, ACCESSIBILITY_DELEGATE);
}
public void dispatchNestedScroll(int i, int i2, int i3, int i4, int[] iArr, int i5, int[] iArr2) {
this.mChildHelper.dispatchNestedScroll(i, i2, i3, i4, iArr, i5, iArr2);
}
public boolean startNestedScroll(int i, int i2) {
return this.mChildHelper.startNestedScroll(i, i2);
}
public void stopNestedScroll(int i) {
this.mChildHelper.stopNestedScroll(i);
}
public boolean hasNestedScrollingParent(int i) {
return this.mChildHelper.hasNestedScrollingParent(i);
}
public boolean dispatchNestedScroll(int i, int i2, int i3, int i4, int[] iArr, int i5) {
return this.mChildHelper.dispatchNestedScroll(i, i2, i3, i4, iArr, i5);
}
public boolean dispatchNestedPreScroll(int i, int i2, int[] iArr, int[] iArr2, int i3) {
return this.mChildHelper.dispatchNestedPreScroll(i, i2, iArr, iArr2, i3);
}
public void setNestedScrollingEnabled(boolean z) {
this.mChildHelper.setNestedScrollingEnabled(z);
}
public boolean isNestedScrollingEnabled() {
return this.mChildHelper.isNestedScrollingEnabled();
}
public boolean startNestedScroll(int i) {
return startNestedScroll(i, 0);
}
public void stopNestedScroll() {
stopNestedScroll(0);
}
public boolean hasNestedScrollingParent() {
return hasNestedScrollingParent(0);
}
public boolean dispatchNestedScroll(int i, int i2, int i3, int i4, int[] iArr) {
return this.mChildHelper.dispatchNestedScroll(i, i2, i3, i4, iArr);
}
public boolean dispatchNestedPreScroll(int i, int i2, int[] iArr, int[] iArr2) {
return dispatchNestedPreScroll(i, i2, iArr, iArr2, 0);
}
public boolean dispatchNestedFling(float f, float f2, boolean z) {
return this.mChildHelper.dispatchNestedFling(f, f2, z);
}
public boolean dispatchNestedPreFling(float f, float f2) {
return this.mChildHelper.dispatchNestedPreFling(f, f2);
}
public void onNestedScroll(View view, int i, int i2, int i3, int i4, int i5, int[] iArr) {
onNestedScrollInternal(i4, i5, iArr);
}
private void onNestedScrollInternal(int i, int i2, int[] iArr) {
int scrollY = getScrollY();
scrollBy(0, i);
int scrollY2 = getScrollY() - scrollY;
if (iArr != null) {
iArr[1] = iArr[1] + scrollY2;
}
this.mChildHelper.dispatchNestedScroll(0, scrollY2, 0, i - scrollY2, (int[]) null, i2, iArr);
}
public void onNestedScrollAccepted(View view, View view2, int i, int i2) {
this.mParentHelper.onNestedScrollAccepted(view, view2, i, i2);
startNestedScroll(2, i2);
}
public void onStopNestedScroll(View view, int i) {
this.mParentHelper.onStopNestedScroll(view, i);
stopNestedScroll(i);
}
public void onNestedScroll(View view, int i, int i2, int i3, int i4, int i5) {
onNestedScrollInternal(i4, i5, (int[]) null);
}
public void onNestedPreScroll(View view, int i, int i2, int[] iArr, int i3) {
dispatchNestedPreScroll(i, i2, iArr, (int[]) null, i3);
}
public boolean onStartNestedScroll(View view, View view2, int i) {
return onStartNestedScroll(view, view2, i, 0);
}
public void onNestedScrollAccepted(View view, View view2, int i) {
onNestedScrollAccepted(view, view2, i, 0);
}
public void onStopNestedScroll(View view) {
onStopNestedScroll(view, 0);
}
public void onNestedScroll(View view, int i, int i2, int i3, int i4) {
onNestedScrollInternal(i4, 0, (int[]) null);
}
public void onNestedPreScroll(View view, int i, int i2, int[] iArr) {
onNestedPreScroll(view, i, i2, iArr, 0);
}
public boolean onNestedFling(View view, float f, float f2, boolean z) {
if (z) {
return false;
}
dispatchNestedFling(0.0f, f2, true);
fling((int) f2);
return true;
}
public boolean onNestedPreFling(View view, float f, float f2) {
return dispatchNestedPreFling(f, f2);
}
public int getNestedScrollAxes() {
return this.mParentHelper.getNestedScrollAxes();
}
/* access modifiers changed from: protected */
public float getTopFadingEdgeStrength() {
if (getChildCount() == 0) {
return 0.0f;
}
int verticalFadingEdgeLength = getVerticalFadingEdgeLength();
int scrollY = getScrollY();
if (scrollY < verticalFadingEdgeLength) {
return ((float) scrollY) / ((float) verticalFadingEdgeLength);
}
return 1.0f;
}
/* access modifiers changed from: protected */
public float getBottomFadingEdgeStrength() {
if (getChildCount() == 0) {
return 0.0f;
}
View childAt = getChildAt(0);
int verticalFadingEdgeLength = getVerticalFadingEdgeLength();
int bottom = ((childAt.getBottom() + ((FrameLayout.LayoutParams) childAt.getLayoutParams()).bottomMargin) - getScrollY()) - (getHeight() - getPaddingBottom());
if (bottom < verticalFadingEdgeLength) {
return ((float) bottom) / ((float) verticalFadingEdgeLength);
}
return 1.0f;
}
public int getMaxScrollAmount() {
return (int) (((float) getHeight()) * MAX_SCROLL_FACTOR);
}
private void initScrollView() {
this.mScroller = new OverScroller(getContext());
setFocusable(true);
setDescendantFocusability(262144);
setWillNotDraw(false);
ViewConfiguration viewConfiguration = ViewConfiguration.get(getContext());
this.mTouchSlop = viewConfiguration.getScaledTouchSlop();
this.mMinimumVelocity = viewConfiguration.getScaledMinimumFlingVelocity();
this.mMaximumVelocity = viewConfiguration.getScaledMaximumFlingVelocity();
}
public void addView(View view) {
if (getChildCount() <= 0) {
super.addView(view);
return;
}
throw new IllegalStateException("ScrollView can host only one direct child");
}
public void addView(View view, int i) {
if (getChildCount() <= 0) {
super.addView(view, i);
return;
}
throw new IllegalStateException("ScrollView can host only one direct child");
}
public void addView(View view, ViewGroup.LayoutParams layoutParams) {
if (getChildCount() <= 0) {
super.addView(view, layoutParams);
return;
}
throw new IllegalStateException("ScrollView can host only one direct child");
}
public void addView(View view, int i, ViewGroup.LayoutParams layoutParams) {
if (getChildCount() <= 0) {
super.addView(view, i, layoutParams);
return;
}
throw new IllegalStateException("ScrollView can host only one direct child");
}
public void setOnScrollChangeListener(OnScrollChangeListener onScrollChangeListener) {
this.mOnScrollChangeListener = onScrollChangeListener;
}
private boolean canScroll() {
if (getChildCount() <= 0) {
return false;
}
View childAt = getChildAt(0);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) childAt.getLayoutParams();
if (childAt.getHeight() + layoutParams.topMargin + layoutParams.bottomMargin > (getHeight() - getPaddingTop()) - getPaddingBottom()) {
return true;
}
return false;
}
public boolean isFillViewport() {
return this.mFillViewport;
}
public void setFillViewport(boolean z) {
if (z != this.mFillViewport) {
this.mFillViewport = z;
requestLayout();
}
}
public boolean isSmoothScrollingEnabled() {
return this.mSmoothScrollingEnabled;
}
public void setSmoothScrollingEnabled(boolean z) {
this.mSmoothScrollingEnabled = z;
}
/* access modifiers changed from: protected */
public void onScrollChanged(int i, int i2, int i3, int i4) {
super.onScrollChanged(i, i2, i3, i4);
OnScrollChangeListener onScrollChangeListener = this.mOnScrollChangeListener;
if (onScrollChangeListener != null) {
onScrollChangeListener.onScrollChange(this, i, i2, i3, i4);
}
}
/* access modifiers changed from: protected */
public void onMeasure(int i, int i2) {
super.onMeasure(i, i2);
if (this.mFillViewport && View.MeasureSpec.getMode(i2) != 0 && getChildCount() > 0) {
View childAt = getChildAt(0);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) childAt.getLayoutParams();
int measuredHeight = childAt.getMeasuredHeight();
int measuredHeight2 = (((getMeasuredHeight() - getPaddingTop()) - getPaddingBottom()) - layoutParams.topMargin) - layoutParams.bottomMargin;
if (measuredHeight < measuredHeight2) {
childAt.measure(getChildMeasureSpec(i, getPaddingLeft() + getPaddingRight() + layoutParams.leftMargin + layoutParams.rightMargin, layoutParams.width), View.MeasureSpec.makeMeasureSpec(measuredHeight2, 1073741824));
}
}
}
public boolean dispatchKeyEvent(KeyEvent keyEvent) {
return super.dispatchKeyEvent(keyEvent) || executeKeyEvent(keyEvent);
}
public boolean executeKeyEvent(KeyEvent keyEvent) {
this.mTempRect.setEmpty();
boolean canScroll = canScroll();
int i = TsExtractor.TS_STREAM_TYPE_HDMV_DTS;
if (!canScroll) {
if (!isFocused() || keyEvent.getKeyCode() == 4) {
return false;
}
View findFocus = findFocus();
if (findFocus == this) {
findFocus = null;
}
View findNextFocus = FocusFinder.getInstance().findNextFocus(this, findFocus, TsExtractor.TS_STREAM_TYPE_HDMV_DTS);
if (findNextFocus == null || findNextFocus == this || !findNextFocus.requestFocus(TsExtractor.TS_STREAM_TYPE_HDMV_DTS)) {
return false;
}
return true;
} else if (keyEvent.getAction() != 0) {
return false;
} else {
int keyCode = keyEvent.getKeyCode();
if (keyCode != 19) {
if (keyCode != 20) {
if (keyCode != 62) {
return false;
}
if (keyEvent.isShiftPressed()) {
i = 33;
}
pageScroll(i);
return false;
} else if (!keyEvent.isAltPressed()) {
return arrowScroll(TsExtractor.TS_STREAM_TYPE_HDMV_DTS);
} else {
return fullScroll(TsExtractor.TS_STREAM_TYPE_HDMV_DTS);
}
} else if (!keyEvent.isAltPressed()) {
return arrowScroll(33);
} else {
return fullScroll(33);
}
}
}
private boolean inChild(int i, int i2) {
if (getChildCount() <= 0) {
return false;
}
int scrollY = getScrollY();
View childAt = getChildAt(0);
if (i2 < childAt.getTop() - scrollY || i2 >= childAt.getBottom() - scrollY || i < childAt.getLeft() || i >= childAt.getRight()) {
return false;
}
return true;
}
private void initOrResetVelocityTracker() {
VelocityTracker velocityTracker = this.mVelocityTracker;
if (velocityTracker == null) {
this.mVelocityTracker = VelocityTracker.obtain();
} else {
velocityTracker.clear();
}
}
private void initVelocityTrackerIfNotExists() {
if (this.mVelocityTracker == null) {
this.mVelocityTracker = VelocityTracker.obtain();
}
}
private void recycleVelocityTracker() {
VelocityTracker velocityTracker = this.mVelocityTracker;
if (velocityTracker != null) {
velocityTracker.recycle();
this.mVelocityTracker = null;
}
}
public void requestDisallowInterceptTouchEvent(boolean z) {
if (z) {
recycleVelocityTracker();
}
super.requestDisallowInterceptTouchEvent(z);
}
public boolean onInterceptTouchEvent(MotionEvent motionEvent) {
int action = motionEvent.getAction();
boolean z = true;
if (action == 2 && this.mIsBeingDragged) {
return true;
}
int i = action & 255;
if (i != 0) {
if (i != 1) {
if (i == 2) {
int i2 = this.mActivePointerId;
if (i2 != -1) {
int findPointerIndex = motionEvent.findPointerIndex(i2);
if (findPointerIndex == -1) {
Log.e(TAG, "Invalid pointerId=" + i2 + " in onInterceptTouchEvent");
} else {
int y = (int) motionEvent.getY(findPointerIndex);
if (Math.abs(y - this.mLastMotionY) > this.mTouchSlop && (2 & getNestedScrollAxes()) == 0) {
this.mIsBeingDragged = true;
this.mLastMotionY = y;
initVelocityTrackerIfNotExists();
this.mVelocityTracker.addMovement(motionEvent);
this.mNestedYOffset = 0;
ViewParent parent = getParent();
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
}
}
}
} else if (i != 3) {
if (i == 6) {
onSecondaryPointerUp(motionEvent);
}
}
}
this.mIsBeingDragged = false;
this.mActivePointerId = -1;
recycleVelocityTracker();
if (this.mScroller.springBack(getScrollX(), getScrollY(), 0, 0, 0, getScrollRange())) {
ViewCompat.postInvalidateOnAnimation(this);
}
stopNestedScroll(0);
} else {
int y2 = (int) motionEvent.getY();
if (!inChild((int) motionEvent.getX(), y2)) {
if (!stopGlowAnimations(motionEvent) && this.mScroller.isFinished()) {
z = false;
}
this.mIsBeingDragged = z;
recycleVelocityTracker();
} else {
this.mLastMotionY = y2;
this.mActivePointerId = motionEvent.getPointerId(0);
initOrResetVelocityTracker();
this.mVelocityTracker.addMovement(motionEvent);
this.mScroller.computeScrollOffset();
if (!stopGlowAnimations(motionEvent) && this.mScroller.isFinished()) {
z = false;
}
this.mIsBeingDragged = z;
startNestedScroll(2, 0);
}
}
return this.mIsBeingDragged;
}
/* JADX WARNING: Removed duplicated region for block: B:74:0x01d8 */
/* Code decompiled incorrectly, please refer to instructions dump. */
public boolean onTouchEvent(android.view.MotionEvent r24) {
/*
r23 = this;
r10 = r23
r11 = r24
r23.initVelocityTrackerIfNotExists()
int r0 = r24.getActionMasked()
r12 = 0
if (r0 != 0) goto L_0x0010
r10.mNestedYOffset = r12
L_0x0010:
android.view.MotionEvent r13 = android.view.MotionEvent.obtain(r24)
int r1 = r10.mNestedYOffset
float r1 = (float) r1
r2 = 0
r13.offsetLocation(r2, r1)
r1 = 2
r14 = 1
if (r0 == 0) goto L_0x0230
r3 = -1
if (r0 == r14) goto L_0x01df
if (r0 == r1) goto L_0x0082
r1 = 3
if (r0 == r1) goto L_0x0054
r1 = 5
if (r0 == r1) goto L_0x0041
r1 = 6
if (r0 == r1) goto L_0x002f
goto L_0x025f
L_0x002f:
r23.onSecondaryPointerUp(r24)
int r0 = r10.mActivePointerId
int r0 = r11.findPointerIndex(r0)
float r0 = r11.getY(r0)
int r0 = (int) r0
r10.mLastMotionY = r0
goto L_0x025f
L_0x0041:
int r0 = r24.getActionIndex()
float r1 = r11.getY(r0)
int r1 = (int) r1
r10.mLastMotionY = r1
int r0 = r11.getPointerId(r0)
r10.mActivePointerId = r0
goto L_0x025f
L_0x0054:
boolean r0 = r10.mIsBeingDragged
if (r0 == 0) goto L_0x007b
int r0 = r23.getChildCount()
if (r0 <= 0) goto L_0x007b
android.widget.OverScroller r15 = r10.mScroller
int r16 = r23.getScrollX()
int r17 = r23.getScrollY()
r18 = 0
r19 = 0
r20 = 0
int r21 = r23.getScrollRange()
boolean r0 = r15.springBack(r16, r17, r18, r19, r20, r21)
if (r0 == 0) goto L_0x007b
androidx.core.view.ViewCompat.postInvalidateOnAnimation(r23)
L_0x007b:
r10.mActivePointerId = r3
r23.endDrag()
goto L_0x025f
L_0x0082:
int r0 = r10.mActivePointerId
int r15 = r11.findPointerIndex(r0)
if (r15 != r3) goto L_0x00a9
java.lang.StringBuilder r0 = new java.lang.StringBuilder
r0.<init>()
java.lang.String r1 = "Invalid pointerId="
r0.append(r1)
int r1 = r10.mActivePointerId
r0.append(r1)
java.lang.String r1 = " in onTouchEvent"
r0.append(r1)
java.lang.String r0 = r0.toString()
java.lang.String r1 = "NestedScrollView"
android.util.Log.e(r1, r0)
goto L_0x025f
L_0x00a9:
float r0 = r11.getY(r15)
int r6 = (int) r0
int r0 = r10.mLastMotionY
int r0 = r0 - r6
float r1 = r11.getX(r15)
int r1 = r10.releaseVerticalGlow(r0, r1)
int r0 = r0 - r1
boolean r1 = r10.mIsBeingDragged
if (r1 != 0) goto L_0x00da
int r1 = java.lang.Math.abs(r0)
int r2 = r10.mTouchSlop
if (r1 <= r2) goto L_0x00da
android.view.ViewParent r1 = r23.getParent()
if (r1 == 0) goto L_0x00cf
r1.requestDisallowInterceptTouchEvent(r14)
L_0x00cf:
r10.mIsBeingDragged = r14
if (r0 <= 0) goto L_0x00d7
int r1 = r10.mTouchSlop
int r0 = r0 - r1
goto L_0x00da
L_0x00d7:
int r1 = r10.mTouchSlop
int r0 = r0 + r1
L_0x00da:
r7 = r0
boolean r0 = r10.mIsBeingDragged
if (r0 == 0) goto L_0x025f
r1 = 0
int[] r3 = r10.mScrollConsumed
int[] r4 = r10.mScrollOffset
r5 = 0
r0 = r23
r2 = r7
boolean r0 = r0.dispatchNestedPreScroll(r1, r2, r3, r4, r5)
if (r0 == 0) goto L_0x00fc
int[] r0 = r10.mScrollConsumed
r0 = r0[r14]
int r7 = r7 - r0
int r0 = r10.mNestedYOffset
int[] r1 = r10.mScrollOffset
r1 = r1[r14]
int r0 = r0 + r1
r10.mNestedYOffset = r0
L_0x00fc:
r16 = r7
int[] r0 = r10.mScrollOffset
r0 = r0[r14]
int r6 = r6 - r0
r10.mLastMotionY = r6
int r17 = r23.getScrollY()
int r9 = r23.getScrollRange()
int r0 = r23.getOverScrollMode()
if (r0 == 0) goto L_0x011b
if (r0 != r14) goto L_0x0118
if (r9 <= 0) goto L_0x0118
goto L_0x011b
L_0x0118:
r18 = 0
goto L_0x011d
L_0x011b:
r18 = 1
L_0x011d:
r1 = 0
r3 = 0
int r4 = r23.getScrollY()
r5 = 0
r7 = 0
r8 = 0
r19 = 1
r0 = r23
r2 = r16
r6 = r9
r22 = r9
r9 = r19
boolean r0 = r0.overScrollByCompat(r1, r2, r3, r4, r5, r6, r7, r8, r9)
if (r0 == 0) goto L_0x013f
boolean r0 = r10.hasNestedScrollingParent(r12)
if (r0 != 0) goto L_0x013f
r8 = 1
goto L_0x0140
L_0x013f:
r8 = 0
L_0x0140:
int r0 = r23.getScrollY()
int r2 = r0 - r17
int r4 = r16 - r2
int[] r7 = r10.mScrollConsumed
r7[r14] = r12
r1 = 0
r3 = 0
int[] r5 = r10.mScrollOffset
r6 = 0
r0 = r23
r0.dispatchNestedScroll(r1, r2, r3, r4, r5, r6, r7)
int r0 = r10.mLastMotionY
int[] r1 = r10.mScrollOffset
r2 = r1[r14]
int r0 = r0 - r2
r10.mLastMotionY = r0
int r0 = r10.mNestedYOffset
r1 = r1[r14]
int r0 = r0 + r1
r10.mNestedYOffset = r0
if (r18 == 0) goto L_0x01d5
int[] r0 = r10.mScrollConsumed
r0 = r0[r14]
int r0 = r16 - r0
int r1 = r17 + r0
if (r1 >= 0) goto L_0x0197
android.widget.EdgeEffect r1 = r10.mEdgeGlowTop
int r0 = -r0
float r0 = (float) r0
int r2 = r23.getHeight()
float r2 = (float) r2
float r0 = r0 / r2
float r2 = r11.getX(r15)
int r3 = r23.getWidth()
float r3 = (float) r3
float r2 = r2 / r3
androidx.core.widget.EdgeEffectCompat.onPullDistance(r1, r0, r2)
android.widget.EdgeEffect r0 = r10.mEdgeGlowBottom
boolean r0 = r0.isFinished()
if (r0 != 0) goto L_0x01c1
android.widget.EdgeEffect r0 = r10.mEdgeGlowBottom
r0.onRelease()
goto L_0x01c1
L_0x0197:
r2 = r22
if (r1 <= r2) goto L_0x01c1
android.widget.EdgeEffect r1 = r10.mEdgeGlowBottom
float r0 = (float) r0
int r2 = r23.getHeight()
float r2 = (float) r2
float r0 = r0 / r2
r2 = 1065353216(0x3f800000, float:1.0)
float r3 = r11.getX(r15)
int r4 = r23.getWidth()
float r4 = (float) r4
float r3 = r3 / r4
float r2 = r2 - r3
androidx.core.widget.EdgeEffectCompat.onPullDistance(r1, r0, r2)
android.widget.EdgeEffect r0 = r10.mEdgeGlowTop
boolean r0 = r0.isFinished()
if (r0 != 0) goto L_0x01c1
android.widget.EdgeEffect r0 = r10.mEdgeGlowTop
r0.onRelease()
L_0x01c1:
android.widget.EdgeEffect r0 = r10.mEdgeGlowTop
boolean r0 = r0.isFinished()
if (r0 == 0) goto L_0x01d1
android.widget.EdgeEffect r0 = r10.mEdgeGlowBottom
boolean r0 = r0.isFinished()
if (r0 != 0) goto L_0x01d5
L_0x01d1:
androidx.core.view.ViewCompat.postInvalidateOnAnimation(r23)
goto L_0x01d6
L_0x01d5:
r12 = r8
L_0x01d6:
if (r12 == 0) goto L_0x025f
android.view.VelocityTracker r0 = r10.mVelocityTracker
r0.clear()
goto L_0x025f
L_0x01df:
android.view.VelocityTracker r0 = r10.mVelocityTracker
r1 = 1000(0x3e8, float:1.401E-42)
int r4 = r10.mMaximumVelocity
float r4 = (float) r4
r0.computeCurrentVelocity(r1, r4)
int r1 = r10.mActivePointerId
float r0 = r0.getYVelocity(r1)
int r0 = (int) r0
int r1 = java.lang.Math.abs(r0)
int r4 = r10.mMinimumVelocity
if (r1 < r4) goto L_0x020d
boolean r1 = r10.edgeEffectFling(r0)
if (r1 != 0) goto L_0x022a
int r0 = -r0
float r1 = (float) r0
boolean r4 = r10.dispatchNestedPreFling(r2, r1)
if (r4 != 0) goto L_0x022a
r10.dispatchNestedFling(r2, r1, r14)
r10.fling(r0)
goto L_0x022a
L_0x020d:
android.widget.OverScroller r15 = r10.mScroller
int r16 = r23.getScrollX()
int r17 = r23.getScrollY()
r18 = 0
r19 = 0
r20 = 0
int r21 = r23.getScrollRange()
boolean r0 = r15.springBack(r16, r17, r18, r19, r20, r21)
if (r0 == 0) goto L_0x022a
androidx.core.view.ViewCompat.postInvalidateOnAnimation(r23)
L_0x022a:
r10.mActivePointerId = r3
r23.endDrag()
goto L_0x025f
L_0x0230:
int r0 = r23.getChildCount()
if (r0 != 0) goto L_0x0237
return r12
L_0x0237:
boolean r0 = r10.mIsBeingDragged
if (r0 == 0) goto L_0x0244
android.view.ViewParent r0 = r23.getParent()
if (r0 == 0) goto L_0x0244
r0.requestDisallowInterceptTouchEvent(r14)
L_0x0244:
android.widget.OverScroller r0 = r10.mScroller
boolean r0 = r0.isFinished()
if (r0 != 0) goto L_0x024f
r23.abortAnimatedScroll()
L_0x024f:
float r0 = r24.getY()
int r0 = (int) r0
r10.mLastMotionY = r0
int r0 = r11.getPointerId(r12)
r10.mActivePointerId = r0
r10.startNestedScroll(r1, r12)
L_0x025f:
android.view.VelocityTracker r0 = r10.mVelocityTracker
if (r0 == 0) goto L_0x0266
r0.addMovement(r13)
L_0x0266:
r13.recycle()
return r14
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.core.widget.NestedScrollView.onTouchEvent(android.view.MotionEvent):boolean");
}
private boolean edgeEffectFling(int i) {
if (EdgeEffectCompat.getDistance(this.mEdgeGlowTop) != 0.0f) {
this.mEdgeGlowTop.onAbsorb(i);
} else if (EdgeEffectCompat.getDistance(this.mEdgeGlowBottom) == 0.0f) {
return false;
} else {
this.mEdgeGlowBottom.onAbsorb(-i);
}
return true;
}
private boolean stopGlowAnimations(MotionEvent motionEvent) {
boolean z;
if (EdgeEffectCompat.getDistance(this.mEdgeGlowTop) != 0.0f) {
EdgeEffectCompat.onPullDistance(this.mEdgeGlowTop, 0.0f, motionEvent.getY() / ((float) getHeight()));
z = true;
} else {
z = false;
}
if (EdgeEffectCompat.getDistance(this.mEdgeGlowBottom) == 0.0f) {
return z;
}
EdgeEffectCompat.onPullDistance(this.mEdgeGlowBottom, 0.0f, 1.0f - (motionEvent.getY() / ((float) getHeight())));
return true;
}
private void onSecondaryPointerUp(MotionEvent motionEvent) {
int actionIndex = motionEvent.getActionIndex();
if (motionEvent.getPointerId(actionIndex) == this.mActivePointerId) {
int i = actionIndex == 0 ? 1 : 0;
this.mLastMotionY = (int) motionEvent.getY(i);
this.mActivePointerId = motionEvent.getPointerId(i);
VelocityTracker velocityTracker = this.mVelocityTracker;
if (velocityTracker != null) {
velocityTracker.clear();
}
}
}
public boolean onGenericMotionEvent(MotionEvent motionEvent) {
if ((motionEvent.getSource() & 2) != 0 && motionEvent.getAction() == 8 && !this.mIsBeingDragged) {
float axisValue = motionEvent.getAxisValue(9);
if (axisValue != 0.0f) {
int scrollRange = getScrollRange();
int scrollY = getScrollY();
int verticalScrollFactorCompat = scrollY - ((int) (axisValue * getVerticalScrollFactorCompat()));
if (verticalScrollFactorCompat < 0) {
scrollRange = 0;
} else if (verticalScrollFactorCompat <= scrollRange) {
scrollRange = verticalScrollFactorCompat;
}
if (scrollRange != scrollY) {
super.scrollTo(getScrollX(), scrollRange);
return true;
}
}
}
return false;
}
private float getVerticalScrollFactorCompat() {
if (this.mVerticalScrollFactor == 0.0f) {
TypedValue typedValue = new TypedValue();
Context context = getContext();
if (context.getTheme().resolveAttribute(16842829, typedValue, true)) {
this.mVerticalScrollFactor = typedValue.getDimension(context.getResources().getDisplayMetrics());
} else {
throw new IllegalStateException("Expected theme to define listPreferredItemHeight.");
}
}
return this.mVerticalScrollFactor;
}
/* access modifiers changed from: protected */
public void onOverScrolled(int i, int i2, boolean z, boolean z2) {
super.scrollTo(i, i2);
}
/* access modifiers changed from: package-private */
/* JADX WARNING: Removed duplicated region for block: B:34:0x0057 */
/* JADX WARNING: Removed duplicated region for block: B:36:0x005a */
/* JADX WARNING: Removed duplicated region for block: B:45:0x0083 A[ADDED_TO_REGION] */
/* Code decompiled incorrectly, please refer to instructions dump. */
public boolean overScrollByCompat(int r13, int r14, int r15, int r16, int r17, int r18, int r19, int r20, boolean r21) {
/*
r12 = this;
r0 = r12
int r1 = r12.getOverScrollMode()
int r2 = r12.computeHorizontalScrollRange()
int r3 = r12.computeHorizontalScrollExtent()
r4 = 0
r5 = 1
if (r2 <= r3) goto L_0x0013
r2 = 1
goto L_0x0014
L_0x0013:
r2 = 0
L_0x0014:
int r3 = r12.computeVerticalScrollRange()
int r6 = r12.computeVerticalScrollExtent()
if (r3 <= r6) goto L_0x0020
r3 = 1
goto L_0x0021
L_0x0020:
r3 = 0
L_0x0021:
if (r1 == 0) goto L_0x002a
if (r1 != r5) goto L_0x0028
if (r2 == 0) goto L_0x0028
goto L_0x002a
L_0x0028:
r2 = 0
goto L_0x002b
L_0x002a:
r2 = 1
L_0x002b:
if (r1 == 0) goto L_0x0034
if (r1 != r5) goto L_0x0032
if (r3 == 0) goto L_0x0032
goto L_0x0034
L_0x0032:
r1 = 0
goto L_0x0035
L_0x0034:
r1 = 1
L_0x0035:
int r3 = r15 + r13
if (r2 != 0) goto L_0x003b
r2 = 0
goto L_0x003d
L_0x003b:
r2 = r19
L_0x003d:
int r6 = r16 + r14
if (r1 != 0) goto L_0x0043
r1 = 0
goto L_0x0045
L_0x0043:
r1 = r20
L_0x0045:
int r7 = -r2
int r2 = r2 + r17
int r8 = -r1
int r1 = r1 + r18
if (r3 <= r2) goto L_0x0050
r3 = r2
L_0x004e:
r2 = 1
goto L_0x0055
L_0x0050:
if (r3 >= r7) goto L_0x0054
r3 = r7
goto L_0x004e
L_0x0054:
r2 = 0
L_0x0055:
if (r6 <= r1) goto L_0x005a
r6 = r1
L_0x0058:
r1 = 1
goto L_0x005f
L_0x005a:
if (r6 >= r8) goto L_0x005e
r6 = r8
goto L_0x0058
L_0x005e:
r1 = 0
L_0x005f:
if (r1 == 0) goto L_0x007e
boolean r7 = r12.hasNestedScrollingParent(r5)
if (r7 != 0) goto L_0x007e
android.widget.OverScroller r7 = r0.mScroller
r8 = 0
r9 = 0
r10 = 0
int r11 = r12.getScrollRange()
r13 = r7
r14 = r3
r15 = r6
r16 = r8
r17 = r9
r18 = r10
r19 = r11
r13.springBack(r14, r15, r16, r17, r18, r19)
L_0x007e:
r12.onOverScrolled(r3, r6, r2, r1)
if (r2 != 0) goto L_0x0085
if (r1 == 0) goto L_0x0086
L_0x0085:
r4 = 1
L_0x0086:
return r4
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.core.widget.NestedScrollView.overScrollByCompat(int, int, int, int, int, int, int, int, boolean):boolean");
}
/* access modifiers changed from: package-private */
public int getScrollRange() {
if (getChildCount() <= 0) {
return 0;
}
View childAt = getChildAt(0);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) childAt.getLayoutParams();
return Math.max(0, ((childAt.getHeight() + layoutParams.topMargin) + layoutParams.bottomMargin) - ((getHeight() - getPaddingTop()) - getPaddingBottom()));
}
private View findFocusableViewInBounds(boolean z, int i, int i2) {
ArrayList focusables = getFocusables(2);
int size = focusables.size();
View view = null;
boolean z2 = false;
for (int i3 = 0; i3 < size; i3++) {
View view2 = (View) focusables.get(i3);
int top = view2.getTop();
int bottom = view2.getBottom();
if (i < bottom && top < i2) {
boolean z3 = i < top && bottom < i2;
if (view == null) {
view = view2;
z2 = z3;
} else {
boolean z4 = (z && top < view.getTop()) || (!z && bottom > view.getBottom());
if (z2) {
if (z3) {
if (!z4) {
}
}
} else if (z3) {
view = view2;
z2 = true;
} else if (!z4) {
}
view = view2;
}
}
}
return view;
}
public boolean pageScroll(int i) {
boolean z = i == 130;
int height = getHeight();
if (z) {
this.mTempRect.top = getScrollY() + height;
int childCount = getChildCount();
if (childCount > 0) {
View childAt = getChildAt(childCount - 1);
int bottom = childAt.getBottom() + ((FrameLayout.LayoutParams) childAt.getLayoutParams()).bottomMargin + getPaddingBottom();
if (this.mTempRect.top + height > bottom) {
this.mTempRect.top = bottom - height;
}
}
} else {
this.mTempRect.top = getScrollY() - height;
if (this.mTempRect.top < 0) {
this.mTempRect.top = 0;
}
}
Rect rect = this.mTempRect;
rect.bottom = rect.top + height;
return scrollAndFocus(i, this.mTempRect.top, this.mTempRect.bottom);
}
public boolean fullScroll(int i) {
int childCount;
boolean z = i == 130;
int height = getHeight();
this.mTempRect.top = 0;
this.mTempRect.bottom = height;
if (z && (childCount = getChildCount()) > 0) {
View childAt = getChildAt(childCount - 1);
this.mTempRect.bottom = childAt.getBottom() + ((FrameLayout.LayoutParams) childAt.getLayoutParams()).bottomMargin + getPaddingBottom();
Rect rect = this.mTempRect;
rect.top = rect.bottom - height;
}
return scrollAndFocus(i, this.mTempRect.top, this.mTempRect.bottom);
}
private boolean scrollAndFocus(int i, int i2, int i3) {
int height = getHeight();
int scrollY = getScrollY();
int i4 = height + scrollY;
boolean z = false;
boolean z2 = i == 33;
View findFocusableViewInBounds = findFocusableViewInBounds(z2, i2, i3);
if (findFocusableViewInBounds == null) {
findFocusableViewInBounds = this;
}
if (i2 < scrollY || i3 > i4) {
doScrollY(z2 ? i2 - scrollY : i3 - i4);
z = true;
}
if (findFocusableViewInBounds != findFocus()) {
findFocusableViewInBounds.requestFocus(i);
}
return z;
}
public boolean arrowScroll(int i) {
View findFocus = findFocus();
if (findFocus == this) {
findFocus = null;
}
View findNextFocus = FocusFinder.getInstance().findNextFocus(this, findFocus, i);
int maxScrollAmount = getMaxScrollAmount();
if (findNextFocus == null || !isWithinDeltaOfScreen(findNextFocus, maxScrollAmount, getHeight())) {
if (i == 33 && getScrollY() < maxScrollAmount) {
maxScrollAmount = getScrollY();
} else if (i == 130 && getChildCount() > 0) {
View childAt = getChildAt(0);
maxScrollAmount = Math.min((childAt.getBottom() + ((FrameLayout.LayoutParams) childAt.getLayoutParams()).bottomMargin) - ((getScrollY() + getHeight()) - getPaddingBottom()), maxScrollAmount);
}
if (maxScrollAmount == 0) {
return false;
}
if (i != 130) {
maxScrollAmount = -maxScrollAmount;
}
doScrollY(maxScrollAmount);
} else {
findNextFocus.getDrawingRect(this.mTempRect);
offsetDescendantRectToMyCoords(findNextFocus, this.mTempRect);
doScrollY(computeScrollDeltaToGetChildRectOnScreen(this.mTempRect));
findNextFocus.requestFocus(i);
}
if (findFocus == null || !findFocus.isFocused() || !isOffScreen(findFocus)) {
return true;
}
int descendantFocusability = getDescendantFocusability();
setDescendantFocusability(131072);
requestFocus();
setDescendantFocusability(descendantFocusability);
return true;
}
private boolean isOffScreen(View view) {
return !isWithinDeltaOfScreen(view, 0, getHeight());
}
private boolean isWithinDeltaOfScreen(View view, int i, int i2) {
view.getDrawingRect(this.mTempRect);
offsetDescendantRectToMyCoords(view, this.mTempRect);
return this.mTempRect.bottom + i >= getScrollY() && this.mTempRect.top - i <= getScrollY() + i2;
}
private void doScrollY(int i) {
if (i == 0) {
return;
}
if (this.mSmoothScrollingEnabled) {
smoothScrollBy(0, i);
} else {
scrollBy(0, i);
}
}
public final void smoothScrollBy(int i, int i2) {
smoothScrollBy(i, i2, ItemTouchHelper.Callback.DEFAULT_SWIPE_ANIMATION_DURATION, false);
}
public final void smoothScrollBy(int i, int i2, int i3) {
smoothScrollBy(i, i2, i3, false);
}
private void smoothScrollBy(int i, int i2, int i3, boolean z) {
if (getChildCount() != 0) {
if (AnimationUtils.currentAnimationTimeMillis() - this.mLastScroll > 250) {
View childAt = getChildAt(0);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) childAt.getLayoutParams();
int scrollY = getScrollY();
OverScroller overScroller = this.mScroller;
int scrollX = getScrollX();
overScroller.startScroll(scrollX, scrollY, 0, Math.max(0, Math.min(i2 + scrollY, Math.max(0, ((childAt.getHeight() + layoutParams.topMargin) + layoutParams.bottomMargin) - ((getHeight() - getPaddingTop()) - getPaddingBottom())))) - scrollY, i3);
runAnimatedScroll(z);
} else {
if (!this.mScroller.isFinished()) {
abortAnimatedScroll();
}
scrollBy(i, i2);
}
this.mLastScroll = AnimationUtils.currentAnimationTimeMillis();
}
}
public final void smoothScrollTo(int i, int i2) {
smoothScrollTo(i, i2, ItemTouchHelper.Callback.DEFAULT_SWIPE_ANIMATION_DURATION, false);
}
public final void smoothScrollTo(int i, int i2, int i3) {
smoothScrollTo(i, i2, i3, false);
}
/* access modifiers changed from: package-private */
public void smoothScrollTo(int i, int i2, boolean z) {
smoothScrollTo(i, i2, ItemTouchHelper.Callback.DEFAULT_SWIPE_ANIMATION_DURATION, z);
}
/* access modifiers changed from: package-private */
public void smoothScrollTo(int i, int i2, int i3, boolean z) {
smoothScrollBy(i - getScrollX(), i2 - getScrollY(), i3, z);
}
public int computeVerticalScrollRange() {
int childCount = getChildCount();
int height = (getHeight() - getPaddingBottom()) - getPaddingTop();
if (childCount == 0) {
return height;
}
View childAt = getChildAt(0);
int bottom = childAt.getBottom() + ((FrameLayout.LayoutParams) childAt.getLayoutParams()).bottomMargin;
int scrollY = getScrollY();
int max = Math.max(0, bottom - height);
if (scrollY < 0) {
return bottom - scrollY;
}
return scrollY > max ? bottom + (scrollY - max) : bottom;
}
public int computeVerticalScrollOffset() {
return Math.max(0, super.computeVerticalScrollOffset());
}
public int computeVerticalScrollExtent() {
return super.computeVerticalScrollExtent();
}
public int computeHorizontalScrollRange() {
return super.computeHorizontalScrollRange();
}
public int computeHorizontalScrollOffset() {
return super.computeHorizontalScrollOffset();
}
public int computeHorizontalScrollExtent() {
return super.computeHorizontalScrollExtent();
}
/* access modifiers changed from: protected */
public void measureChild(View view, int i, int i2) {
view.measure(getChildMeasureSpec(i, getPaddingLeft() + getPaddingRight(), view.getLayoutParams().width), View.MeasureSpec.makeMeasureSpec(0, 0));
}
/* access modifiers changed from: protected */
public void measureChildWithMargins(View view, int i, int i2, int i3, int i4) {
ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
view.measure(getChildMeasureSpec(i, getPaddingLeft() + getPaddingRight() + marginLayoutParams.leftMargin + marginLayoutParams.rightMargin + i2, marginLayoutParams.width), View.MeasureSpec.makeMeasureSpec(marginLayoutParams.topMargin + marginLayoutParams.bottomMargin, 0));
}
public void computeScroll() {
if (!this.mScroller.isFinished()) {
this.mScroller.computeScrollOffset();
int currY = this.mScroller.getCurrY();
int i = currY - this.mLastScrollerY;
this.mLastScrollerY = currY;
int[] iArr = this.mScrollConsumed;
boolean z = false;
iArr[1] = 0;
dispatchNestedPreScroll(0, i, iArr, (int[]) null, 1);
int i2 = i - this.mScrollConsumed[1];
int scrollRange = getScrollRange();
if (i2 != 0) {
int scrollY = getScrollY();
overScrollByCompat(0, i2, getScrollX(), scrollY, 0, scrollRange, 0, 0, false);
int scrollY2 = getScrollY() - scrollY;
int i3 = i2 - scrollY2;
int[] iArr2 = this.mScrollConsumed;
iArr2[1] = 0;
dispatchNestedScroll(0, scrollY2, 0, i3, this.mScrollOffset, 1, iArr2);
i2 = i3 - this.mScrollConsumed[1];
}
if (i2 != 0) {
int overScrollMode = getOverScrollMode();
if (overScrollMode == 0 || (overScrollMode == 1 && scrollRange > 0)) {
z = true;
}
if (z) {
if (i2 < 0) {
if (this.mEdgeGlowTop.isFinished()) {
this.mEdgeGlowTop.onAbsorb((int) this.mScroller.getCurrVelocity());
}
} else if (this.mEdgeGlowBottom.isFinished()) {
this.mEdgeGlowBottom.onAbsorb((int) this.mScroller.getCurrVelocity());
}
}
abortAnimatedScroll();
}
if (!this.mScroller.isFinished()) {
ViewCompat.postInvalidateOnAnimation(this);
} else {
stopNestedScroll(1);
}
}
}
/* JADX WARNING: Removed duplicated region for block: B:13:0x0061 */
/* Code decompiled incorrectly, please refer to instructions dump. */
private int releaseVerticalGlow(int r4, float r5) {
/*
r3 = this;
int r0 = r3.getWidth()
float r0 = (float) r0
float r5 = r5 / r0
float r4 = (float) r4
int r0 = r3.getHeight()
float r0 = (float) r0
float r4 = r4 / r0
android.widget.EdgeEffect r0 = r3.mEdgeGlowTop
float r0 = androidx.core.widget.EdgeEffectCompat.getDistance(r0)
r1 = 0
int r0 = (r0 > r1 ? 1 : (r0 == r1 ? 0 : -1))
if (r0 == 0) goto L_0x0031
android.widget.EdgeEffect r0 = r3.mEdgeGlowTop
float r4 = -r4
float r4 = androidx.core.widget.EdgeEffectCompat.onPullDistance(r0, r4, r5)
float r4 = -r4
android.widget.EdgeEffect r5 = r3.mEdgeGlowTop
float r5 = androidx.core.widget.EdgeEffectCompat.getDistance(r5)
int r5 = (r5 > r1 ? 1 : (r5 == r1 ? 0 : -1))
if (r5 != 0) goto L_0x002f
android.widget.EdgeEffect r5 = r3.mEdgeGlowTop
r5.onRelease()
L_0x002f:
r1 = r4
goto L_0x0054
L_0x0031:
android.widget.EdgeEffect r0 = r3.mEdgeGlowBottom
float r0 = androidx.core.widget.EdgeEffectCompat.getDistance(r0)
int r0 = (r0 > r1 ? 1 : (r0 == r1 ? 0 : -1))
if (r0 == 0) goto L_0x0054
android.widget.EdgeEffect r0 = r3.mEdgeGlowBottom
r2 = 1065353216(0x3f800000, float:1.0)
float r2 = r2 - r5
float r4 = androidx.core.widget.EdgeEffectCompat.onPullDistance(r0, r4, r2)
android.widget.EdgeEffect r5 = r3.mEdgeGlowBottom
float r5 = androidx.core.widget.EdgeEffectCompat.getDistance(r5)
int r5 = (r5 > r1 ? 1 : (r5 == r1 ? 0 : -1))
if (r5 != 0) goto L_0x002f
android.widget.EdgeEffect r5 = r3.mEdgeGlowBottom
r5.onRelease()
goto L_0x002f
L_0x0054:
int r4 = r3.getHeight()
float r4 = (float) r4
float r1 = r1 * r4
int r4 = java.lang.Math.round(r1)
if (r4 == 0) goto L_0x0064
r3.invalidate()
L_0x0064:
return r4
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.core.widget.NestedScrollView.releaseVerticalGlow(int, float):int");
}
private void runAnimatedScroll(boolean z) {
if (z) {
startNestedScroll(2, 1);
} else {
stopNestedScroll(1);
}
this.mLastScrollerY = getScrollY();
ViewCompat.postInvalidateOnAnimation(this);
}
private void abortAnimatedScroll() {
this.mScroller.abortAnimation();
stopNestedScroll(1);
}
private void scrollToChild(View view) {
view.getDrawingRect(this.mTempRect);
offsetDescendantRectToMyCoords(view, this.mTempRect);
int computeScrollDeltaToGetChildRectOnScreen = computeScrollDeltaToGetChildRectOnScreen(this.mTempRect);
if (computeScrollDeltaToGetChildRectOnScreen != 0) {
scrollBy(0, computeScrollDeltaToGetChildRectOnScreen);
}
}
private boolean scrollToChildRect(Rect rect, boolean z) {
int computeScrollDeltaToGetChildRectOnScreen = computeScrollDeltaToGetChildRectOnScreen(rect);
boolean z2 = computeScrollDeltaToGetChildRectOnScreen != 0;
if (z2) {
if (z) {
scrollBy(0, computeScrollDeltaToGetChildRectOnScreen);
} else {
smoothScrollBy(0, computeScrollDeltaToGetChildRectOnScreen);
}
}
return z2;
}
/* access modifiers changed from: protected */
public int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
int i;
int i2;
if (getChildCount() == 0) {
return 0;
}
int height = getHeight();
int scrollY = getScrollY();
int i3 = scrollY + height;
int verticalFadingEdgeLength = getVerticalFadingEdgeLength();
if (rect.top > 0) {
scrollY += verticalFadingEdgeLength;
}
View childAt = getChildAt(0);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) childAt.getLayoutParams();
int i4 = rect.bottom < (childAt.getHeight() + layoutParams.topMargin) + layoutParams.bottomMargin ? i3 - verticalFadingEdgeLength : i3;
if (rect.bottom > i4 && rect.top > scrollY) {
if (rect.height() > height) {
i2 = rect.top - scrollY;
} else {
i2 = rect.bottom - i4;
}
return Math.min(i2 + 0, (childAt.getBottom() + layoutParams.bottomMargin) - i3);
} else if (rect.top >= scrollY || rect.bottom >= i4) {
return 0;
} else {
if (rect.height() > height) {
i = 0 - (i4 - rect.bottom);
} else {
i = 0 - (scrollY - rect.top);
}
return Math.max(i, -getScrollY());
}
}
public void requestChildFocus(View view, View view2) {
if (!this.mIsLayoutDirty) {
scrollToChild(view2);
} else {
this.mChildToScrollTo = view2;
}
super.requestChildFocus(view, view2);
}
/* access modifiers changed from: protected */
public boolean onRequestFocusInDescendants(int i, Rect rect) {
View view;
if (i == 2) {
i = TsExtractor.TS_STREAM_TYPE_HDMV_DTS;
} else if (i == 1) {
i = 33;
}
if (rect == null) {
view = FocusFinder.getInstance().findNextFocus(this, (View) null, i);
} else {
view = FocusFinder.getInstance().findNextFocusFromRect(this, rect, i);
}
if (view != null && !isOffScreen(view)) {
return view.requestFocus(i, rect);
}
return false;
}
public boolean requestChildRectangleOnScreen(View view, Rect rect, boolean z) {
rect.offset(view.getLeft() - view.getScrollX(), view.getTop() - view.getScrollY());
return scrollToChildRect(rect, z);
}
public void requestLayout() {
this.mIsLayoutDirty = true;
super.requestLayout();
}
/* access modifiers changed from: protected */
public void onLayout(boolean z, int i, int i2, int i3, int i4) {
super.onLayout(z, i, i2, i3, i4);
int i5 = 0;
this.mIsLayoutDirty = false;
View view = this.mChildToScrollTo;
if (view != null && isViewDescendantOf(view, this)) {
scrollToChild(this.mChildToScrollTo);
}
this.mChildToScrollTo = null;
if (!this.mIsLaidOut) {
if (this.mSavedState != null) {
scrollTo(getScrollX(), this.mSavedState.scrollPosition);
this.mSavedState = null;
}
if (getChildCount() > 0) {
View childAt = getChildAt(0);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) childAt.getLayoutParams();
i5 = childAt.getMeasuredHeight() + layoutParams.topMargin + layoutParams.bottomMargin;
}
int paddingTop = ((i4 - i2) - getPaddingTop()) - getPaddingBottom();
int scrollY = getScrollY();
int clamp = clamp(scrollY, paddingTop, i5);
if (clamp != scrollY) {
scrollTo(getScrollX(), clamp);
}
}
scrollTo(getScrollX(), getScrollY());
this.mIsLaidOut = true;
}
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.mIsLaidOut = false;
}
/* access modifiers changed from: protected */
public void onSizeChanged(int i, int i2, int i3, int i4) {
super.onSizeChanged(i, i2, i3, i4);
View findFocus = findFocus();
if (findFocus != null && this != findFocus && isWithinDeltaOfScreen(findFocus, 0, i4)) {
findFocus.getDrawingRect(this.mTempRect);
offsetDescendantRectToMyCoords(findFocus, this.mTempRect);
doScrollY(computeScrollDeltaToGetChildRectOnScreen(this.mTempRect));
}
}
private static boolean isViewDescendantOf(View view, View view2) {
if (view == view2) {
return true;
}
ViewParent parent = view.getParent();
if (!(parent instanceof ViewGroup) || !isViewDescendantOf((View) parent, view2)) {
return false;
}
return true;
}
public void fling(int i) {
if (getChildCount() > 0) {
this.mScroller.fling(getScrollX(), getScrollY(), 0, i, 0, 0, Integer.MIN_VALUE, Integer.MAX_VALUE, 0, 0);
runAnimatedScroll(true);
}
}
private void endDrag() {
this.mIsBeingDragged = false;
recycleVelocityTracker();
stopNestedScroll(0);
this.mEdgeGlowTop.onRelease();
this.mEdgeGlowBottom.onRelease();
}
public void scrollTo(int i, int i2) {
if (getChildCount() > 0) {
View childAt = getChildAt(0);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) childAt.getLayoutParams();
int clamp = clamp(i, (getWidth() - getPaddingLeft()) - getPaddingRight(), childAt.getWidth() + layoutParams.leftMargin + layoutParams.rightMargin);
int clamp2 = clamp(i2, (getHeight() - getPaddingTop()) - getPaddingBottom(), childAt.getHeight() + layoutParams.topMargin + layoutParams.bottomMargin);
if (clamp != getScrollX() || clamp2 != getScrollY()) {
super.scrollTo(clamp, clamp2);
}
}
}
public void draw(Canvas canvas) {
int i;
super.draw(canvas);
int scrollY = getScrollY();
int i2 = 0;
if (!this.mEdgeGlowTop.isFinished()) {
int save = canvas.save();
int width = getWidth();
int height = getHeight();
int min = Math.min(0, scrollY);
if (Build.VERSION.SDK_INT < 21 || getClipToPadding()) {
width -= getPaddingLeft() + getPaddingRight();
i = getPaddingLeft() + 0;
} else {
i = 0;
}
if (Build.VERSION.SDK_INT >= 21 && getClipToPadding()) {
height -= getPaddingTop() + getPaddingBottom();
min += getPaddingTop();
}
canvas.translate((float) i, (float) min);
this.mEdgeGlowTop.setSize(width, height);
if (this.mEdgeGlowTop.draw(canvas)) {
ViewCompat.postInvalidateOnAnimation(this);
}
canvas.restoreToCount(save);
}
if (!this.mEdgeGlowBottom.isFinished()) {
int save2 = canvas.save();
int width2 = getWidth();
int height2 = getHeight();
int max = Math.max(getScrollRange(), scrollY) + height2;
if (Build.VERSION.SDK_INT < 21 || getClipToPadding()) {
width2 -= getPaddingLeft() + getPaddingRight();
i2 = 0 + getPaddingLeft();
}
if (Build.VERSION.SDK_INT >= 21 && getClipToPadding()) {
height2 -= getPaddingTop() + getPaddingBottom();
max -= getPaddingBottom();
}
canvas.translate((float) (i2 - width2), (float) max);
canvas.rotate(180.0f, (float) width2, 0.0f);
this.mEdgeGlowBottom.setSize(width2, height2);
if (this.mEdgeGlowBottom.draw(canvas)) {
ViewCompat.postInvalidateOnAnimation(this);
}
canvas.restoreToCount(save2);
}
}
/* access modifiers changed from: protected */
public void onRestoreInstanceState(Parcelable parcelable) {
if (!(parcelable instanceof SavedState)) {
super.onRestoreInstanceState(parcelable);
return;
}
SavedState savedState = (SavedState) parcelable;
super.onRestoreInstanceState(savedState.getSuperState());
this.mSavedState = savedState;
requestLayout();
}
/* access modifiers changed from: protected */
public Parcelable onSaveInstanceState() {
SavedState savedState = new SavedState(super.onSaveInstanceState());
savedState.scrollPosition = getScrollY();
return savedState;
}
static class SavedState extends View.BaseSavedState {
public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() {
public SavedState createFromParcel(Parcel parcel) {
return new SavedState(parcel);
}
public SavedState[] newArray(int i) {
return new SavedState[i];
}
};
public int scrollPosition;
SavedState(Parcelable parcelable) {
super(parcelable);
}
SavedState(Parcel parcel) {
super(parcel);
this.scrollPosition = parcel.readInt();
}
public void writeToParcel(Parcel parcel, int i) {
super.writeToParcel(parcel, i);
parcel.writeInt(this.scrollPosition);
}
public String toString() {
return "HorizontalScrollView.SavedState{" + Integer.toHexString(System.identityHashCode(this)) + " scrollPosition=" + this.scrollPosition + "}";
}
}
static class AccessibilityDelegate extends AccessibilityDelegateCompat {
AccessibilityDelegate() {
}
public boolean performAccessibilityAction(View view, int i, Bundle bundle) {
if (super.performAccessibilityAction(view, i, bundle)) {
return true;
}
NestedScrollView nestedScrollView = (NestedScrollView) view;
if (!nestedScrollView.isEnabled()) {
return false;
}
if (i != 4096) {
if (i == 8192 || i == 16908344) {
int max = Math.max(nestedScrollView.getScrollY() - ((nestedScrollView.getHeight() - nestedScrollView.getPaddingBottom()) - nestedScrollView.getPaddingTop()), 0);
if (max == nestedScrollView.getScrollY()) {
return false;
}
nestedScrollView.smoothScrollTo(0, max, true);
return true;
} else if (i != 16908346) {
return false;
}
}
int min = Math.min(nestedScrollView.getScrollY() + ((nestedScrollView.getHeight() - nestedScrollView.getPaddingBottom()) - nestedScrollView.getPaddingTop()), nestedScrollView.getScrollRange());
if (min == nestedScrollView.getScrollY()) {
return false;
}
nestedScrollView.smoothScrollTo(0, min, true);
return true;
}
public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
int scrollRange;
super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
NestedScrollView nestedScrollView = (NestedScrollView) view;
accessibilityNodeInfoCompat.setClassName(ScrollView.class.getName());
if (nestedScrollView.isEnabled() && (scrollRange = nestedScrollView.getScrollRange()) > 0) {
accessibilityNodeInfoCompat.setScrollable(true);
if (nestedScrollView.getScrollY() > 0) {
accessibilityNodeInfoCompat.addAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_BACKWARD);
accessibilityNodeInfoCompat.addAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_UP);
}
if (nestedScrollView.getScrollY() < scrollRange) {
accessibilityNodeInfoCompat.addAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_FORWARD);
accessibilityNodeInfoCompat.addAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_SCROLL_DOWN);
}
}
}
public void onInitializeAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) {
super.onInitializeAccessibilityEvent(view, accessibilityEvent);
NestedScrollView nestedScrollView = (NestedScrollView) view;
accessibilityEvent.setClassName(ScrollView.class.getName());
accessibilityEvent.setScrollable(nestedScrollView.getScrollRange() > 0);
accessibilityEvent.setScrollX(nestedScrollView.getScrollX());
accessibilityEvent.setScrollY(nestedScrollView.getScrollY());
AccessibilityRecordCompat.setMaxScrollX(accessibilityEvent, nestedScrollView.getScrollX());
AccessibilityRecordCompat.setMaxScrollY(accessibilityEvent, nestedScrollView.getScrollRange());
}
}
}
Download file