ADD week 5
This commit is contained in:
		| @@ -0,0 +1,744 @@ | ||||
| package androidx.appcompat.widget; | ||||
|  | ||||
| import android.animation.Animator; | ||||
| import android.animation.AnimatorListenerAdapter; | ||||
| import android.content.Context; | ||||
| import android.content.res.Configuration; | ||||
| import android.content.res.TypedArray; | ||||
| import android.graphics.Canvas; | ||||
| import android.graphics.Rect; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.os.Parcelable; | ||||
| import android.util.AttributeSet; | ||||
| import android.util.SparseArray; | ||||
| import android.view.Menu; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.view.ViewPropertyAnimator; | ||||
| import android.view.Window; | ||||
| import android.widget.OverScroller; | ||||
| import androidx.appcompat.R; | ||||
| import androidx.appcompat.view.menu.MenuPresenter; | ||||
| import androidx.core.graphics.Insets; | ||||
| import androidx.core.view.NestedScrollingParent; | ||||
| import androidx.core.view.NestedScrollingParent2; | ||||
| import androidx.core.view.NestedScrollingParent3; | ||||
| import androidx.core.view.NestedScrollingParentHelper; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import androidx.core.view.WindowInsetsCompat; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ActionBarOverlayLayout extends ViewGroup implements DecorContentParent, NestedScrollingParent, NestedScrollingParent2, NestedScrollingParent3 { | ||||
|     private static final int ACTION_BAR_ANIMATE_DELAY = 600; | ||||
|     static final int[] ATTRS = {R.attr.actionBarSize, android.R.attr.windowContentOverlay}; | ||||
|     private static final String TAG = "ActionBarOverlayLayout"; | ||||
|     private int mActionBarHeight; | ||||
|     ActionBarContainer mActionBarTop; | ||||
|     private ActionBarVisibilityCallback mActionBarVisibilityCallback; | ||||
|     private final Runnable mAddActionBarHideOffset; | ||||
|     boolean mAnimatingForFling; | ||||
|     private final Rect mBaseContentInsets; | ||||
|     private WindowInsetsCompat mBaseInnerInsets; | ||||
|     private final Rect mBaseInnerInsetsRect; | ||||
|     private ContentFrameLayout mContent; | ||||
|     private final Rect mContentInsets; | ||||
|     ViewPropertyAnimator mCurrentActionBarTopAnimator; | ||||
|     private DecorToolbar mDecorToolbar; | ||||
|     private OverScroller mFlingEstimator; | ||||
|     private boolean mHasNonEmbeddedTabs; | ||||
|     private boolean mHideOnContentScroll; | ||||
|     private int mHideOnContentScrollReference; | ||||
|     private boolean mIgnoreWindowContentOverlay; | ||||
|     private WindowInsetsCompat mInnerInsets; | ||||
|     private final Rect mInnerInsetsRect; | ||||
|     private final Rect mLastBaseContentInsets; | ||||
|     private WindowInsetsCompat mLastBaseInnerInsets; | ||||
|     private final Rect mLastBaseInnerInsetsRect; | ||||
|     private WindowInsetsCompat mLastInnerInsets; | ||||
|     private final Rect mLastInnerInsetsRect; | ||||
|     private int mLastSystemUiVisibility; | ||||
|     private boolean mOverlayMode; | ||||
|     private final NestedScrollingParentHelper mParentHelper; | ||||
|     private final Runnable mRemoveActionBarHideOffset; | ||||
|     final AnimatorListenerAdapter mTopAnimatorListener; | ||||
|     private Drawable mWindowContentOverlay; | ||||
|     private int mWindowVisibility; | ||||
|  | ||||
|     public interface ActionBarVisibilityCallback { | ||||
|         void enableContentAnimations(boolean z); | ||||
|  | ||||
|         void hideForSystem(); | ||||
|  | ||||
|         void onContentScrollStarted(); | ||||
|  | ||||
|         void onContentScrollStopped(); | ||||
|  | ||||
|         void onWindowVisibilityChanged(int i); | ||||
|  | ||||
|         void showForSystem(); | ||||
|     } | ||||
|  | ||||
|     public boolean isHideOnContentScrollEnabled() { | ||||
|         return this.mHideOnContentScroll; | ||||
|     } | ||||
|  | ||||
|     public boolean isInOverlayMode() { | ||||
|         return this.mOverlayMode; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.ViewParent, androidx.core.view.NestedScrollingParent | ||||
|     public boolean onNestedPreFling(View view, float f, float f2) { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.ViewParent, androidx.core.view.NestedScrollingParent | ||||
|     public void onNestedPreScroll(View view, int i, int i2, int[] iArr) { | ||||
|     } | ||||
|  | ||||
|     public void setHasNonEmbeddedTabs(boolean z) { | ||||
|         this.mHasNonEmbeddedTabs = z; | ||||
|     } | ||||
|  | ||||
|     public void setShowingForActionMode(boolean z) { | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setUiOptions(int i) { | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup | ||||
|     public boolean shouldDelayChildPressedState() { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public ActionBarOverlayLayout(Context context) { | ||||
|         this(context, null); | ||||
|     } | ||||
|  | ||||
|     public ActionBarOverlayLayout(Context context, AttributeSet attributeSet) { | ||||
|         super(context, attributeSet); | ||||
|         this.mWindowVisibility = 0; | ||||
|         this.mBaseContentInsets = new Rect(); | ||||
|         this.mLastBaseContentInsets = new Rect(); | ||||
|         this.mContentInsets = new Rect(); | ||||
|         this.mBaseInnerInsetsRect = new Rect(); | ||||
|         this.mLastBaseInnerInsetsRect = new Rect(); | ||||
|         this.mInnerInsetsRect = new Rect(); | ||||
|         this.mLastInnerInsetsRect = new Rect(); | ||||
|         this.mBaseInnerInsets = WindowInsetsCompat.CONSUMED; | ||||
|         this.mLastBaseInnerInsets = WindowInsetsCompat.CONSUMED; | ||||
|         this.mInnerInsets = WindowInsetsCompat.CONSUMED; | ||||
|         this.mLastInnerInsets = WindowInsetsCompat.CONSUMED; | ||||
|         this.mTopAnimatorListener = new AnimatorListenerAdapter() { // from class: androidx.appcompat.widget.ActionBarOverlayLayout.1 | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationEnd(Animator animator) { | ||||
|                 ActionBarOverlayLayout.this.mCurrentActionBarTopAnimator = null; | ||||
|                 ActionBarOverlayLayout.this.mAnimatingForFling = false; | ||||
|             } | ||||
|  | ||||
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|             public void onAnimationCancel(Animator animator) { | ||||
|                 ActionBarOverlayLayout.this.mCurrentActionBarTopAnimator = null; | ||||
|                 ActionBarOverlayLayout.this.mAnimatingForFling = false; | ||||
|             } | ||||
|         }; | ||||
|         this.mRemoveActionBarHideOffset = new Runnable() { // from class: androidx.appcompat.widget.ActionBarOverlayLayout.2 | ||||
|             @Override // java.lang.Runnable | ||||
|             public void run() { | ||||
|                 ActionBarOverlayLayout.this.haltActionBarHideOffsetAnimations(); | ||||
|                 ActionBarOverlayLayout actionBarOverlayLayout = ActionBarOverlayLayout.this; | ||||
|                 actionBarOverlayLayout.mCurrentActionBarTopAnimator = actionBarOverlayLayout.mActionBarTop.animate().translationY(0.0f).setListener(ActionBarOverlayLayout.this.mTopAnimatorListener); | ||||
|             } | ||||
|         }; | ||||
|         this.mAddActionBarHideOffset = new Runnable() { // from class: androidx.appcompat.widget.ActionBarOverlayLayout.3 | ||||
|             @Override // java.lang.Runnable | ||||
|             public void run() { | ||||
|                 ActionBarOverlayLayout.this.haltActionBarHideOffsetAnimations(); | ||||
|                 ActionBarOverlayLayout actionBarOverlayLayout = ActionBarOverlayLayout.this; | ||||
|                 actionBarOverlayLayout.mCurrentActionBarTopAnimator = actionBarOverlayLayout.mActionBarTop.animate().translationY(-ActionBarOverlayLayout.this.mActionBarTop.getHeight()).setListener(ActionBarOverlayLayout.this.mTopAnimatorListener); | ||||
|             } | ||||
|         }; | ||||
|         init(context); | ||||
|         this.mParentHelper = new NestedScrollingParentHelper(this); | ||||
|     } | ||||
|  | ||||
|     private void init(Context context) { | ||||
|         TypedArray obtainStyledAttributes = getContext().getTheme().obtainStyledAttributes(ATTRS); | ||||
|         this.mActionBarHeight = obtainStyledAttributes.getDimensionPixelSize(0, 0); | ||||
|         Drawable drawable = obtainStyledAttributes.getDrawable(1); | ||||
|         this.mWindowContentOverlay = drawable; | ||||
|         setWillNotDraw(drawable == null); | ||||
|         obtainStyledAttributes.recycle(); | ||||
|         this.mIgnoreWindowContentOverlay = context.getApplicationInfo().targetSdkVersion < 19; | ||||
|         this.mFlingEstimator = new OverScroller(context); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.View | ||||
|     protected void onDetachedFromWindow() { | ||||
|         super.onDetachedFromWindow(); | ||||
|         haltActionBarHideOffsetAnimations(); | ||||
|     } | ||||
|  | ||||
|     public void setActionBarVisibilityCallback(ActionBarVisibilityCallback actionBarVisibilityCallback) { | ||||
|         this.mActionBarVisibilityCallback = actionBarVisibilityCallback; | ||||
|         if (getWindowToken() != null) { | ||||
|             this.mActionBarVisibilityCallback.onWindowVisibilityChanged(this.mWindowVisibility); | ||||
|             int i = this.mLastSystemUiVisibility; | ||||
|             if (i != 0) { | ||||
|                 onWindowSystemUiVisibilityChanged(i); | ||||
|                 ViewCompat.requestApplyInsets(this); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void setOverlayMode(boolean z) { | ||||
|         this.mOverlayMode = z; | ||||
|         this.mIgnoreWindowContentOverlay = z && getContext().getApplicationInfo().targetSdkVersion < 19; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected void onConfigurationChanged(Configuration configuration) { | ||||
|         super.onConfigurationChanged(configuration); | ||||
|         init(getContext()); | ||||
|         ViewCompat.requestApplyInsets(this); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     @Deprecated | ||||
|     public void onWindowSystemUiVisibilityChanged(int i) { | ||||
|         super.onWindowSystemUiVisibilityChanged(i); | ||||
|         pullChildren(); | ||||
|         int i2 = this.mLastSystemUiVisibility ^ i; | ||||
|         this.mLastSystemUiVisibility = i; | ||||
|         boolean z = (i & 4) == 0; | ||||
|         boolean z2 = (i & 256) != 0; | ||||
|         ActionBarVisibilityCallback actionBarVisibilityCallback = this.mActionBarVisibilityCallback; | ||||
|         if (actionBarVisibilityCallback != null) { | ||||
|             actionBarVisibilityCallback.enableContentAnimations(!z2); | ||||
|             if (z || !z2) { | ||||
|                 this.mActionBarVisibilityCallback.showForSystem(); | ||||
|             } else { | ||||
|                 this.mActionBarVisibilityCallback.hideForSystem(); | ||||
|             } | ||||
|         } | ||||
|         if ((i2 & 256) == 0 || this.mActionBarVisibilityCallback == null) { | ||||
|             return; | ||||
|         } | ||||
|         ViewCompat.requestApplyInsets(this); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected void onWindowVisibilityChanged(int i) { | ||||
|         super.onWindowVisibilityChanged(i); | ||||
|         this.mWindowVisibility = i; | ||||
|         ActionBarVisibilityCallback actionBarVisibilityCallback = this.mActionBarVisibilityCallback; | ||||
|         if (actionBarVisibilityCallback != null) { | ||||
|             actionBarVisibilityCallback.onWindowVisibilityChanged(i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private boolean applyInsets(View view, Rect rect, boolean z, boolean z2, boolean z3, boolean z4) { | ||||
|         boolean z5; | ||||
|         LayoutParams layoutParams = (LayoutParams) view.getLayoutParams(); | ||||
|         if (!z || layoutParams.leftMargin == rect.left) { | ||||
|             z5 = false; | ||||
|         } else { | ||||
|             layoutParams.leftMargin = rect.left; | ||||
|             z5 = true; | ||||
|         } | ||||
|         if (z2 && layoutParams.topMargin != rect.top) { | ||||
|             layoutParams.topMargin = rect.top; | ||||
|             z5 = true; | ||||
|         } | ||||
|         if (z4 && layoutParams.rightMargin != rect.right) { | ||||
|             layoutParams.rightMargin = rect.right; | ||||
|             z5 = true; | ||||
|         } | ||||
|         if (!z3 || layoutParams.bottomMargin == rect.bottom) { | ||||
|             return z5; | ||||
|         } | ||||
|         layoutParams.bottomMargin = rect.bottom; | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected boolean fitSystemWindows(Rect rect) { | ||||
|         return super.fitSystemWindows(rect); | ||||
|     } | ||||
|  | ||||
|     /* JADX WARN: Code restructure failed: missing block: B:11:0x0061, code lost: | ||||
|      | ||||
|         if (r0 != false) goto L9; | ||||
|      */ | ||||
|     @Override // android.view.View | ||||
|     /* | ||||
|         Code decompiled incorrectly, please refer to instructions dump. | ||||
|         To view partially-correct add '--show-bad-code' argument | ||||
|     */ | ||||
|     public android.view.WindowInsets onApplyWindowInsets(android.view.WindowInsets r8) { | ||||
|         /* | ||||
|             r7 = this; | ||||
|             r7.pullChildren() | ||||
|             androidx.core.view.WindowInsetsCompat r8 = androidx.core.view.WindowInsetsCompat.toWindowInsetsCompat(r8, r7) | ||||
|             android.graphics.Rect r2 = new android.graphics.Rect | ||||
|             int r0 = r8.getSystemWindowInsetLeft() | ||||
|             int r1 = r8.getSystemWindowInsetTop() | ||||
|             int r3 = r8.getSystemWindowInsetRight() | ||||
|             int r4 = r8.getSystemWindowInsetBottom() | ||||
|             r2.<init>(r0, r1, r3, r4) | ||||
|             androidx.appcompat.widget.ActionBarContainer r1 = r7.mActionBarTop | ||||
|             r3 = 1 | ||||
|             r4 = 1 | ||||
|             r5 = 0 | ||||
|             r6 = 1 | ||||
|             r0 = r7 | ||||
|             boolean r0 = r0.applyInsets(r1, r2, r3, r4, r5, r6) | ||||
|             android.graphics.Rect r1 = r7.mBaseContentInsets | ||||
|             androidx.core.view.ViewCompat.computeSystemWindowInsets(r7, r8, r1) | ||||
|             android.graphics.Rect r1 = r7.mBaseContentInsets | ||||
|             int r1 = r1.left | ||||
|             android.graphics.Rect r2 = r7.mBaseContentInsets | ||||
|             int r2 = r2.top | ||||
|             android.graphics.Rect r3 = r7.mBaseContentInsets | ||||
|             int r3 = r3.right | ||||
|             android.graphics.Rect r4 = r7.mBaseContentInsets | ||||
|             int r4 = r4.bottom | ||||
|             androidx.core.view.WindowInsetsCompat r1 = r8.inset(r1, r2, r3, r4) | ||||
|             r7.mBaseInnerInsets = r1 | ||||
|             androidx.core.view.WindowInsetsCompat r2 = r7.mLastBaseInnerInsets | ||||
|             boolean r1 = r2.equals(r1) | ||||
|             if (r1 != 0) goto L4f | ||||
|             androidx.core.view.WindowInsetsCompat r0 = r7.mBaseInnerInsets | ||||
|             r7.mLastBaseInnerInsets = r0 | ||||
|             r0 = 1 | ||||
|         L4f: | ||||
|             android.graphics.Rect r1 = r7.mLastBaseContentInsets | ||||
|             android.graphics.Rect r2 = r7.mBaseContentInsets | ||||
|             boolean r1 = r1.equals(r2) | ||||
|             if (r1 != 0) goto L61 | ||||
|             android.graphics.Rect r0 = r7.mLastBaseContentInsets | ||||
|             android.graphics.Rect r1 = r7.mBaseContentInsets | ||||
|             r0.set(r1) | ||||
|             goto L63 | ||||
|         L61: | ||||
|             if (r0 == 0) goto L66 | ||||
|         L63: | ||||
|             r7.requestLayout() | ||||
|         L66: | ||||
|             androidx.core.view.WindowInsetsCompat r8 = r8.consumeDisplayCutout() | ||||
|             androidx.core.view.WindowInsetsCompat r8 = r8.consumeSystemWindowInsets() | ||||
|             androidx.core.view.WindowInsetsCompat r8 = r8.consumeStableInsets() | ||||
|             android.view.WindowInsets r8 = r8.toWindowInsets() | ||||
|             return r8 | ||||
|         */ | ||||
|         throw new UnsupportedOperationException("Method not decompiled: androidx.appcompat.widget.ActionBarOverlayLayout.onApplyWindowInsets(android.view.WindowInsets):android.view.WindowInsets"); | ||||
|     } | ||||
|  | ||||
|     /* JADX INFO: Access modifiers changed from: protected */ | ||||
|     @Override // android.view.ViewGroup | ||||
|     public LayoutParams generateDefaultLayoutParams() { | ||||
|         return new LayoutParams(-1, -1); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup | ||||
|     public LayoutParams generateLayoutParams(AttributeSet attributeSet) { | ||||
|         return new LayoutParams(getContext(), attributeSet); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup | ||||
|     protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams layoutParams) { | ||||
|         return new LayoutParams(layoutParams); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup | ||||
|     protected boolean checkLayoutParams(ViewGroup.LayoutParams layoutParams) { | ||||
|         return layoutParams instanceof LayoutParams; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected void onMeasure(int i, int i2) { | ||||
|         int measuredHeight; | ||||
|         pullChildren(); | ||||
|         measureChildWithMargins(this.mActionBarTop, i, 0, i2, 0); | ||||
|         LayoutParams layoutParams = (LayoutParams) this.mActionBarTop.getLayoutParams(); | ||||
|         int max = Math.max(0, this.mActionBarTop.getMeasuredWidth() + layoutParams.leftMargin + layoutParams.rightMargin); | ||||
|         int max2 = Math.max(0, this.mActionBarTop.getMeasuredHeight() + layoutParams.topMargin + layoutParams.bottomMargin); | ||||
|         int combineMeasuredStates = View.combineMeasuredStates(0, this.mActionBarTop.getMeasuredState()); | ||||
|         boolean z = (ViewCompat.getWindowSystemUiVisibility(this) & 256) != 0; | ||||
|         if (z) { | ||||
|             measuredHeight = this.mActionBarHeight; | ||||
|             if (this.mHasNonEmbeddedTabs && this.mActionBarTop.getTabContainer() != null) { | ||||
|                 measuredHeight += this.mActionBarHeight; | ||||
|             } | ||||
|         } else { | ||||
|             measuredHeight = this.mActionBarTop.getVisibility() != 8 ? this.mActionBarTop.getMeasuredHeight() : 0; | ||||
|         } | ||||
|         this.mContentInsets.set(this.mBaseContentInsets); | ||||
|         this.mInnerInsets = this.mBaseInnerInsets; | ||||
|         if (!this.mOverlayMode && !z) { | ||||
|             this.mContentInsets.top += measuredHeight; | ||||
|             Rect rect = this.mContentInsets; | ||||
|             rect.bottom = rect.bottom; | ||||
|             this.mInnerInsets = this.mInnerInsets.inset(0, measuredHeight, 0, 0); | ||||
|         } else { | ||||
|             this.mInnerInsets = new WindowInsetsCompat.Builder(this.mInnerInsets).setSystemWindowInsets(Insets.of(this.mInnerInsets.getSystemWindowInsetLeft(), this.mInnerInsets.getSystemWindowInsetTop() + measuredHeight, this.mInnerInsets.getSystemWindowInsetRight(), this.mInnerInsets.getSystemWindowInsetBottom())).build(); | ||||
|         } | ||||
|         applyInsets(this.mContent, this.mContentInsets, true, true, true, true); | ||||
|         if (!this.mLastInnerInsets.equals(this.mInnerInsets)) { | ||||
|             WindowInsetsCompat windowInsetsCompat = this.mInnerInsets; | ||||
|             this.mLastInnerInsets = windowInsetsCompat; | ||||
|             ViewCompat.dispatchApplyWindowInsets(this.mContent, windowInsetsCompat); | ||||
|         } | ||||
|         measureChildWithMargins(this.mContent, i, 0, i2, 0); | ||||
|         LayoutParams layoutParams2 = (LayoutParams) this.mContent.getLayoutParams(); | ||||
|         int max3 = Math.max(max, this.mContent.getMeasuredWidth() + layoutParams2.leftMargin + layoutParams2.rightMargin); | ||||
|         int max4 = Math.max(max2, this.mContent.getMeasuredHeight() + layoutParams2.topMargin + layoutParams2.bottomMargin); | ||||
|         int combineMeasuredStates2 = View.combineMeasuredStates(combineMeasuredStates, this.mContent.getMeasuredState()); | ||||
|         setMeasuredDimension(View.resolveSizeAndState(Math.max(max3 + getPaddingLeft() + getPaddingRight(), getSuggestedMinimumWidth()), i, combineMeasuredStates2), View.resolveSizeAndState(Math.max(max4 + getPaddingTop() + getPaddingBottom(), getSuggestedMinimumHeight()), i2, combineMeasuredStates2 << 16)); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.View | ||||
|     protected void onLayout(boolean z, int i, int i2, int i3, int i4) { | ||||
|         int childCount = getChildCount(); | ||||
|         int paddingLeft = getPaddingLeft(); | ||||
|         int paddingTop = getPaddingTop(); | ||||
|         for (int i5 = 0; i5 < childCount; i5++) { | ||||
|             View childAt = getChildAt(i5); | ||||
|             if (childAt.getVisibility() != 8) { | ||||
|                 LayoutParams layoutParams = (LayoutParams) childAt.getLayoutParams(); | ||||
|                 int measuredWidth = childAt.getMeasuredWidth(); | ||||
|                 int measuredHeight = childAt.getMeasuredHeight(); | ||||
|                 int i6 = layoutParams.leftMargin + paddingLeft; | ||||
|                 int i7 = layoutParams.topMargin + paddingTop; | ||||
|                 childAt.layout(i6, i7, measuredWidth + i6, measuredHeight + i7); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     public void draw(Canvas canvas) { | ||||
|         super.draw(canvas); | ||||
|         if (this.mWindowContentOverlay == null || this.mIgnoreWindowContentOverlay) { | ||||
|             return; | ||||
|         } | ||||
|         int bottom = this.mActionBarTop.getVisibility() == 0 ? (int) (this.mActionBarTop.getBottom() + this.mActionBarTop.getTranslationY() + 0.5f) : 0; | ||||
|         this.mWindowContentOverlay.setBounds(0, bottom, getWidth(), this.mWindowContentOverlay.getIntrinsicHeight() + bottom); | ||||
|         this.mWindowContentOverlay.draw(canvas); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.NestedScrollingParent3 | ||||
|     public void onNestedScroll(View view, int i, int i2, int i3, int i4, int i5, int[] iArr) { | ||||
|         onNestedScroll(view, i, i2, i3, i4, i5); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.NestedScrollingParent2 | ||||
|     public boolean onStartNestedScroll(View view, View view2, int i, int i2) { | ||||
|         return i2 == 0 && onStartNestedScroll(view, view2, i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.NestedScrollingParent2 | ||||
|     public void onNestedScrollAccepted(View view, View view2, int i, int i2) { | ||||
|         if (i2 == 0) { | ||||
|             onNestedScrollAccepted(view, view2, i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.NestedScrollingParent2 | ||||
|     public void onStopNestedScroll(View view, int i) { | ||||
|         if (i == 0) { | ||||
|             onStopNestedScroll(view); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.NestedScrollingParent2 | ||||
|     public void onNestedScroll(View view, int i, int i2, int i3, int i4, int i5) { | ||||
|         if (i5 == 0) { | ||||
|             onNestedScroll(view, i, i2, i3, i4); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.core.view.NestedScrollingParent2 | ||||
|     public void onNestedPreScroll(View view, int i, int i2, int[] iArr, int i3) { | ||||
|         if (i3 == 0) { | ||||
|             onNestedPreScroll(view, i, i2, iArr); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.ViewParent, androidx.core.view.NestedScrollingParent | ||||
|     public boolean onStartNestedScroll(View view, View view2, int i) { | ||||
|         if ((i & 2) == 0 || this.mActionBarTop.getVisibility() != 0) { | ||||
|             return false; | ||||
|         } | ||||
|         return this.mHideOnContentScroll; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.ViewParent, androidx.core.view.NestedScrollingParent | ||||
|     public void onNestedScrollAccepted(View view, View view2, int i) { | ||||
|         this.mParentHelper.onNestedScrollAccepted(view, view2, i); | ||||
|         this.mHideOnContentScrollReference = getActionBarHideOffset(); | ||||
|         haltActionBarHideOffsetAnimations(); | ||||
|         ActionBarVisibilityCallback actionBarVisibilityCallback = this.mActionBarVisibilityCallback; | ||||
|         if (actionBarVisibilityCallback != null) { | ||||
|             actionBarVisibilityCallback.onContentScrollStarted(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.ViewParent, androidx.core.view.NestedScrollingParent | ||||
|     public void onNestedScroll(View view, int i, int i2, int i3, int i4) { | ||||
|         int i5 = this.mHideOnContentScrollReference + i2; | ||||
|         this.mHideOnContentScrollReference = i5; | ||||
|         setActionBarHideOffset(i5); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.ViewParent, androidx.core.view.NestedScrollingParent | ||||
|     public void onStopNestedScroll(View view) { | ||||
|         if (this.mHideOnContentScroll && !this.mAnimatingForFling) { | ||||
|             if (this.mHideOnContentScrollReference <= this.mActionBarTop.getHeight()) { | ||||
|                 postRemoveActionBarHideOffset(); | ||||
|             } else { | ||||
|                 postAddActionBarHideOffset(); | ||||
|             } | ||||
|         } | ||||
|         ActionBarVisibilityCallback actionBarVisibilityCallback = this.mActionBarVisibilityCallback; | ||||
|         if (actionBarVisibilityCallback != null) { | ||||
|             actionBarVisibilityCallback.onContentScrollStopped(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.ViewParent, androidx.core.view.NestedScrollingParent | ||||
|     public boolean onNestedFling(View view, float f, float f2, boolean z) { | ||||
|         if (!this.mHideOnContentScroll || !z) { | ||||
|             return false; | ||||
|         } | ||||
|         if (shouldHideActionBarOnFling(f2)) { | ||||
|             addActionBarHideOffset(); | ||||
|         } else { | ||||
|             removeActionBarHideOffset(); | ||||
|         } | ||||
|         this.mAnimatingForFling = true; | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, androidx.core.view.NestedScrollingParent | ||||
|     public int getNestedScrollAxes() { | ||||
|         return this.mParentHelper.getNestedScrollAxes(); | ||||
|     } | ||||
|  | ||||
|     void pullChildren() { | ||||
|         if (this.mContent == null) { | ||||
|             this.mContent = (ContentFrameLayout) findViewById(R.id.action_bar_activity_content); | ||||
|             this.mActionBarTop = (ActionBarContainer) findViewById(R.id.action_bar_container); | ||||
|             this.mDecorToolbar = getDecorToolbar(findViewById(R.id.action_bar)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /* JADX WARN: Multi-variable type inference failed */ | ||||
|     private DecorToolbar getDecorToolbar(View view) { | ||||
|         if (view instanceof DecorToolbar) { | ||||
|             return (DecorToolbar) view; | ||||
|         } | ||||
|         if (view instanceof Toolbar) { | ||||
|             return ((Toolbar) view).getWrapper(); | ||||
|         } | ||||
|         throw new IllegalStateException("Can't make a decor toolbar out of " + view.getClass().getSimpleName()); | ||||
|     } | ||||
|  | ||||
|     public void setHideOnContentScrollEnabled(boolean z) { | ||||
|         if (z != this.mHideOnContentScroll) { | ||||
|             this.mHideOnContentScroll = z; | ||||
|             if (z) { | ||||
|                 return; | ||||
|             } | ||||
|             haltActionBarHideOffsetAnimations(); | ||||
|             setActionBarHideOffset(0); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public int getActionBarHideOffset() { | ||||
|         ActionBarContainer actionBarContainer = this.mActionBarTop; | ||||
|         if (actionBarContainer != null) { | ||||
|             return -((int) actionBarContainer.getTranslationY()); | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     public void setActionBarHideOffset(int i) { | ||||
|         haltActionBarHideOffsetAnimations(); | ||||
|         this.mActionBarTop.setTranslationY(-Math.max(0, Math.min(i, this.mActionBarTop.getHeight()))); | ||||
|     } | ||||
|  | ||||
|     void haltActionBarHideOffsetAnimations() { | ||||
|         removeCallbacks(this.mRemoveActionBarHideOffset); | ||||
|         removeCallbacks(this.mAddActionBarHideOffset); | ||||
|         ViewPropertyAnimator viewPropertyAnimator = this.mCurrentActionBarTopAnimator; | ||||
|         if (viewPropertyAnimator != null) { | ||||
|             viewPropertyAnimator.cancel(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void postRemoveActionBarHideOffset() { | ||||
|         haltActionBarHideOffsetAnimations(); | ||||
|         postDelayed(this.mRemoveActionBarHideOffset, 600L); | ||||
|     } | ||||
|  | ||||
|     private void postAddActionBarHideOffset() { | ||||
|         haltActionBarHideOffsetAnimations(); | ||||
|         postDelayed(this.mAddActionBarHideOffset, 600L); | ||||
|     } | ||||
|  | ||||
|     private void removeActionBarHideOffset() { | ||||
|         haltActionBarHideOffsetAnimations(); | ||||
|         this.mRemoveActionBarHideOffset.run(); | ||||
|     } | ||||
|  | ||||
|     private void addActionBarHideOffset() { | ||||
|         haltActionBarHideOffsetAnimations(); | ||||
|         this.mAddActionBarHideOffset.run(); | ||||
|     } | ||||
|  | ||||
|     private boolean shouldHideActionBarOnFling(float f) { | ||||
|         this.mFlingEstimator.fling(0, 0, 0, (int) f, 0, 0, Integer.MIN_VALUE, Integer.MAX_VALUE); | ||||
|         return this.mFlingEstimator.getFinalY() > this.mActionBarTop.getHeight(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setWindowCallback(Window.Callback callback) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.setWindowCallback(callback); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setWindowTitle(CharSequence charSequence) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.setWindowTitle(charSequence); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public CharSequence getTitle() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.getTitle(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void initFeature(int i) { | ||||
|         pullChildren(); | ||||
|         if (i == 2) { | ||||
|             this.mDecorToolbar.initProgress(); | ||||
|         } else if (i == 5) { | ||||
|             this.mDecorToolbar.initIndeterminateProgress(); | ||||
|         } else { | ||||
|             if (i != 109) { | ||||
|                 return; | ||||
|             } | ||||
|             setOverlayMode(true); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public boolean hasIcon() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.hasIcon(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public boolean hasLogo() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.hasLogo(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setIcon(int i) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.setIcon(i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setIcon(Drawable drawable) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.setIcon(drawable); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setLogo(int i) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.setLogo(i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public boolean canShowOverflowMenu() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.canShowOverflowMenu(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public boolean isOverflowMenuShowing() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.isOverflowMenuShowing(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public boolean isOverflowMenuShowPending() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.isOverflowMenuShowPending(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public boolean showOverflowMenu() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.showOverflowMenu(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public boolean hideOverflowMenu() { | ||||
|         pullChildren(); | ||||
|         return this.mDecorToolbar.hideOverflowMenu(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setMenuPrepared() { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.setMenuPrepared(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void setMenu(Menu menu, MenuPresenter.Callback callback) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.setMenu(menu, callback); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void saveToolbarHierarchyState(SparseArray<Parcelable> sparseArray) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.saveHierarchyState(sparseArray); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void restoreToolbarHierarchyState(SparseArray<Parcelable> sparseArray) { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.restoreHierarchyState(sparseArray); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.DecorContentParent | ||||
|     public void dismissPopups() { | ||||
|         pullChildren(); | ||||
|         this.mDecorToolbar.dismissPopupMenus(); | ||||
|     } | ||||
|  | ||||
|     public static class LayoutParams extends ViewGroup.MarginLayoutParams { | ||||
|         public LayoutParams(Context context, AttributeSet attributeSet) { | ||||
|             super(context, attributeSet); | ||||
|         } | ||||
|  | ||||
|         public LayoutParams(int i, int i2) { | ||||
|             super(i, i2); | ||||
|         } | ||||
|  | ||||
|         public LayoutParams(ViewGroup.LayoutParams layoutParams) { | ||||
|             super(layoutParams); | ||||
|         } | ||||
|  | ||||
|         public LayoutParams(ViewGroup.MarginLayoutParams marginLayoutParams) { | ||||
|             super(marginLayoutParams); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user