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