ADD week 5
This commit is contained in:
		| @@ -0,0 +1,258 @@ | ||||
| package androidx.appcompat.widget; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.res.Configuration; | ||||
| import android.content.res.TypedArray; | ||||
| import android.util.AttributeSet; | ||||
| import android.util.TypedValue; | ||||
| import android.view.ContextThemeWrapper; | ||||
| import android.view.MotionEvent; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import androidx.appcompat.R; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import androidx.core.view.ViewPropertyAnimatorCompat; | ||||
| import androidx.core.view.ViewPropertyAnimatorListener; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| abstract class AbsActionBarView extends ViewGroup { | ||||
|     private static final int FADE_DURATION = 200; | ||||
|     protected ActionMenuPresenter mActionMenuPresenter; | ||||
|     protected int mContentHeight; | ||||
|     private boolean mEatingHover; | ||||
|     private boolean mEatingTouch; | ||||
|     protected ActionMenuView mMenuView; | ||||
|     protected final Context mPopupContext; | ||||
|     protected final VisibilityAnimListener mVisAnimListener; | ||||
|     protected ViewPropertyAnimatorCompat mVisibilityAnim; | ||||
|  | ||||
|     protected static int next(int i, int i2, boolean z) { | ||||
|         return z ? i - i2 : i + i2; | ||||
|     } | ||||
|  | ||||
|     public int getContentHeight() { | ||||
|         return this.mContentHeight; | ||||
|     } | ||||
|  | ||||
|     AbsActionBarView(Context context) { | ||||
|         this(context, null); | ||||
|     } | ||||
|  | ||||
|     AbsActionBarView(Context context, AttributeSet attributeSet) { | ||||
|         this(context, attributeSet, 0); | ||||
|     } | ||||
|  | ||||
|     AbsActionBarView(Context context, AttributeSet attributeSet, int i) { | ||||
|         super(context, attributeSet, i); | ||||
|         this.mVisAnimListener = new VisibilityAnimListener(); | ||||
|         TypedValue typedValue = new TypedValue(); | ||||
|         if (!context.getTheme().resolveAttribute(R.attr.actionBarPopupTheme, typedValue, true) || typedValue.resourceId == 0) { | ||||
|             this.mPopupContext = context; | ||||
|         } else { | ||||
|             this.mPopupContext = new ContextThemeWrapper(context, typedValue.resourceId); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected void onConfigurationChanged(Configuration configuration) { | ||||
|         super.onConfigurationChanged(configuration); | ||||
|         TypedArray obtainStyledAttributes = getContext().obtainStyledAttributes(null, R.styleable.ActionBar, R.attr.actionBarStyle, 0); | ||||
|         setContentHeight(obtainStyledAttributes.getLayoutDimension(R.styleable.ActionBar_height, 0)); | ||||
|         obtainStyledAttributes.recycle(); | ||||
|         ActionMenuPresenter actionMenuPresenter = this.mActionMenuPresenter; | ||||
|         if (actionMenuPresenter != null) { | ||||
|             actionMenuPresenter.onConfigurationChanged(configuration); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     public boolean onTouchEvent(MotionEvent motionEvent) { | ||||
|         int actionMasked = motionEvent.getActionMasked(); | ||||
|         if (actionMasked == 0) { | ||||
|             this.mEatingTouch = false; | ||||
|         } | ||||
|         if (!this.mEatingTouch) { | ||||
|             boolean onTouchEvent = super.onTouchEvent(motionEvent); | ||||
|             if (actionMasked == 0 && !onTouchEvent) { | ||||
|                 this.mEatingTouch = true; | ||||
|             } | ||||
|         } | ||||
|         if (actionMasked == 1 || actionMasked == 3) { | ||||
|             this.mEatingTouch = false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     public boolean onHoverEvent(MotionEvent motionEvent) { | ||||
|         int actionMasked = motionEvent.getActionMasked(); | ||||
|         if (actionMasked == 9) { | ||||
|             this.mEatingHover = false; | ||||
|         } | ||||
|         if (!this.mEatingHover) { | ||||
|             boolean onHoverEvent = super.onHoverEvent(motionEvent); | ||||
|             if (actionMasked == 9 && !onHoverEvent) { | ||||
|                 this.mEatingHover = true; | ||||
|             } | ||||
|         } | ||||
|         if (actionMasked == 10 || actionMasked == 3) { | ||||
|             this.mEatingHover = false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public void setContentHeight(int i) { | ||||
|         this.mContentHeight = i; | ||||
|         requestLayout(); | ||||
|     } | ||||
|  | ||||
|     public int getAnimatedVisibility() { | ||||
|         if (this.mVisibilityAnim != null) { | ||||
|             return this.mVisAnimListener.mFinalVisibility; | ||||
|         } | ||||
|         return getVisibility(); | ||||
|     } | ||||
|  | ||||
|     public ViewPropertyAnimatorCompat setupAnimatorToVisibility(int i, long j) { | ||||
|         ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = this.mVisibilityAnim; | ||||
|         if (viewPropertyAnimatorCompat != null) { | ||||
|             viewPropertyAnimatorCompat.cancel(); | ||||
|         } | ||||
|         if (i == 0) { | ||||
|             if (getVisibility() != 0) { | ||||
|                 setAlpha(0.0f); | ||||
|             } | ||||
|             ViewPropertyAnimatorCompat alpha = ViewCompat.animate(this).alpha(1.0f); | ||||
|             alpha.setDuration(j); | ||||
|             alpha.setListener(this.mVisAnimListener.withFinalVisibility(alpha, i)); | ||||
|             return alpha; | ||||
|         } | ||||
|         ViewPropertyAnimatorCompat alpha2 = ViewCompat.animate(this).alpha(0.0f); | ||||
|         alpha2.setDuration(j); | ||||
|         alpha2.setListener(this.mVisAnimListener.withFinalVisibility(alpha2, i)); | ||||
|         return alpha2; | ||||
|     } | ||||
|  | ||||
|     public void animateToVisibility(int i) { | ||||
|         setupAnimatorToVisibility(i, 200L).start(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     public void setVisibility(int i) { | ||||
|         if (i != getVisibility()) { | ||||
|             ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = this.mVisibilityAnim; | ||||
|             if (viewPropertyAnimatorCompat != null) { | ||||
|                 viewPropertyAnimatorCompat.cancel(); | ||||
|             } | ||||
|             super.setVisibility(i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public boolean showOverflowMenu() { | ||||
|         ActionMenuPresenter actionMenuPresenter = this.mActionMenuPresenter; | ||||
|         if (actionMenuPresenter != null) { | ||||
|             return actionMenuPresenter.showOverflowMenu(); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public void postShowOverflowMenu() { | ||||
|         post(new Runnable() { // from class: androidx.appcompat.widget.AbsActionBarView.1 | ||||
|             @Override // java.lang.Runnable | ||||
|             public void run() { | ||||
|                 AbsActionBarView.this.showOverflowMenu(); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public boolean hideOverflowMenu() { | ||||
|         ActionMenuPresenter actionMenuPresenter = this.mActionMenuPresenter; | ||||
|         if (actionMenuPresenter != null) { | ||||
|             return actionMenuPresenter.hideOverflowMenu(); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public boolean isOverflowMenuShowing() { | ||||
|         ActionMenuPresenter actionMenuPresenter = this.mActionMenuPresenter; | ||||
|         if (actionMenuPresenter != null) { | ||||
|             return actionMenuPresenter.isOverflowMenuShowing(); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public boolean isOverflowMenuShowPending() { | ||||
|         ActionMenuPresenter actionMenuPresenter = this.mActionMenuPresenter; | ||||
|         if (actionMenuPresenter != null) { | ||||
|             return actionMenuPresenter.isOverflowMenuShowPending(); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public boolean isOverflowReserved() { | ||||
|         ActionMenuPresenter actionMenuPresenter = this.mActionMenuPresenter; | ||||
|         return actionMenuPresenter != null && actionMenuPresenter.isOverflowReserved(); | ||||
|     } | ||||
|  | ||||
|     public boolean canShowOverflowMenu() { | ||||
|         return isOverflowReserved() && getVisibility() == 0; | ||||
|     } | ||||
|  | ||||
|     public void dismissPopupMenus() { | ||||
|         ActionMenuPresenter actionMenuPresenter = this.mActionMenuPresenter; | ||||
|         if (actionMenuPresenter != null) { | ||||
|             actionMenuPresenter.dismissPopupMenus(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected int measureChildView(View view, int i, int i2, int i3) { | ||||
|         view.measure(View.MeasureSpec.makeMeasureSpec(i, Integer.MIN_VALUE), i2); | ||||
|         return Math.max(0, (i - view.getMeasuredWidth()) - i3); | ||||
|     } | ||||
|  | ||||
|     protected int positionChild(View view, int i, int i2, int i3, boolean z) { | ||||
|         int measuredWidth = view.getMeasuredWidth(); | ||||
|         int measuredHeight = view.getMeasuredHeight(); | ||||
|         int i4 = i2 + ((i3 - measuredHeight) / 2); | ||||
|         if (z) { | ||||
|             view.layout(i - measuredWidth, i4, i, measuredHeight + i4); | ||||
|         } else { | ||||
|             view.layout(i, i4, i + measuredWidth, measuredHeight + i4); | ||||
|         } | ||||
|         return z ? -measuredWidth : measuredWidth; | ||||
|     } | ||||
|  | ||||
|     protected class VisibilityAnimListener implements ViewPropertyAnimatorListener { | ||||
|         private boolean mCanceled = false; | ||||
|         int mFinalVisibility; | ||||
|  | ||||
|         @Override // androidx.core.view.ViewPropertyAnimatorListener | ||||
|         public void onAnimationCancel(View view) { | ||||
|             this.mCanceled = true; | ||||
|         } | ||||
|  | ||||
|         protected VisibilityAnimListener() { | ||||
|         } | ||||
|  | ||||
|         public VisibilityAnimListener withFinalVisibility(ViewPropertyAnimatorCompat viewPropertyAnimatorCompat, int i) { | ||||
|             AbsActionBarView.this.mVisibilityAnim = viewPropertyAnimatorCompat; | ||||
|             this.mFinalVisibility = i; | ||||
|             return this; | ||||
|         } | ||||
|  | ||||
|         @Override // androidx.core.view.ViewPropertyAnimatorListener | ||||
|         public void onAnimationStart(View view) { | ||||
|             AbsActionBarView.super.setVisibility(0); | ||||
|             this.mCanceled = false; | ||||
|         } | ||||
|  | ||||
|         @Override // androidx.core.view.ViewPropertyAnimatorListener | ||||
|         public void onAnimationEnd(View view) { | ||||
|             if (this.mCanceled) { | ||||
|                 return; | ||||
|             } | ||||
|             AbsActionBarView.this.mVisibilityAnim = null; | ||||
|             AbsActionBarView.super.setVisibility(this.mFinalVisibility); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user