773 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			773 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.navigation;
 | |
| 
 | |
| import android.R;
 | |
| import android.animation.ValueAnimator;
 | |
| import android.content.Context;
 | |
| import android.content.res.ColorStateList;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.graphics.drawable.RippleDrawable;
 | |
| import android.os.Build;
 | |
| import android.text.TextUtils;
 | |
| import android.util.Log;
 | |
| import android.view.LayoutInflater;
 | |
| import android.view.MotionEvent;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import android.view.accessibility.AccessibilityNodeInfo;
 | |
| import android.widget.FrameLayout;
 | |
| import android.widget.ImageView;
 | |
| import android.widget.TextView;
 | |
| import androidx.appcompat.view.menu.MenuItemImpl;
 | |
| import androidx.appcompat.view.menu.MenuView;
 | |
| import androidx.appcompat.widget.TooltipCompat;
 | |
| import androidx.core.content.ContextCompat;
 | |
| import androidx.core.graphics.drawable.DrawableCompat;
 | |
| import androidx.core.view.PointerIconCompat;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 | |
| import androidx.core.widget.TextViewCompat;
 | |
| import com.google.android.material.animation.AnimationUtils;
 | |
| import com.google.android.material.badge.BadgeDrawable;
 | |
| import com.google.android.material.badge.BadgeUtils;
 | |
| import com.google.android.material.motion.MotionUtils;
 | |
| import com.google.android.material.resources.MaterialResources;
 | |
| import com.google.android.material.ripple.RippleUtils;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public abstract class NavigationBarItemView extends FrameLayout implements MenuView.ItemView {
 | |
|     private static final ActiveIndicatorTransform ACTIVE_INDICATOR_LABELED_TRANSFORM;
 | |
|     private static final ActiveIndicatorTransform ACTIVE_INDICATOR_UNLABELED_TRANSFORM;
 | |
|     private static final int[] CHECKED_STATE_SET = {R.attr.state_checked};
 | |
|     private static final int INVALID_ITEM_POSITION = -1;
 | |
|     private ValueAnimator activeIndicatorAnimator;
 | |
|     private int activeIndicatorDesiredHeight;
 | |
|     private int activeIndicatorDesiredWidth;
 | |
|     private boolean activeIndicatorEnabled;
 | |
|     private int activeIndicatorLabelPadding;
 | |
|     private int activeIndicatorMarginHorizontal;
 | |
|     private float activeIndicatorProgress;
 | |
|     private boolean activeIndicatorResizeable;
 | |
|     private ActiveIndicatorTransform activeIndicatorTransform;
 | |
|     private final View activeIndicatorView;
 | |
|     private int activeTextAppearance;
 | |
|     private BadgeDrawable badgeDrawable;
 | |
|     private final ImageView icon;
 | |
|     private final FrameLayout iconContainer;
 | |
|     private ColorStateList iconTint;
 | |
|     private boolean initialized;
 | |
|     private boolean isShifting;
 | |
|     Drawable itemBackground;
 | |
|     private MenuItemImpl itemData;
 | |
|     private int itemPaddingBottom;
 | |
|     private int itemPaddingTop;
 | |
|     private int itemPosition;
 | |
|     private ColorStateList itemRippleColor;
 | |
|     private final ViewGroup labelGroup;
 | |
|     private int labelVisibilityMode;
 | |
|     private final TextView largeLabel;
 | |
|     private Drawable originalIconDrawable;
 | |
|     private float scaleDownFactor;
 | |
|     private float scaleUpFactor;
 | |
|     private float shiftAmount;
 | |
|     private final TextView smallLabel;
 | |
|     private Drawable wrappedIconDrawable;
 | |
| 
 | |
|     private void calculateTextScaleFactors(float f, float f2) {
 | |
|         this.shiftAmount = f - f2;
 | |
|         this.scaleUpFactor = (f2 * 1.0f) / f;
 | |
|         this.scaleDownFactor = (f * 1.0f) / f2;
 | |
|     }
 | |
| 
 | |
|     private View getIconOrContainer() {
 | |
|         FrameLayout frameLayout = this.iconContainer;
 | |
|         return frameLayout != null ? frameLayout : this.icon;
 | |
|     }
 | |
| 
 | |
|     private boolean hasBadge() {
 | |
|         return this.badgeDrawable != null;
 | |
|     }
 | |
| 
 | |
|     private boolean isActiveIndicatorResizeableAndUnlabeled() {
 | |
|         return this.activeIndicatorResizeable && this.labelVisibilityMode == 2;
 | |
|     }
 | |
| 
 | |
|     public BadgeDrawable getBadge() {
 | |
|         return this.badgeDrawable;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public MenuItemImpl getItemData() {
 | |
|         return this.itemData;
 | |
|     }
 | |
| 
 | |
|     protected abstract int getItemLayoutResId();
 | |
| 
 | |
|     public int getItemPosition() {
 | |
|         return this.itemPosition;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public boolean prefersCondensedTitle() {
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public void setActiveIndicatorResizeable(boolean z) {
 | |
|         this.activeIndicatorResizeable = z;
 | |
|     }
 | |
| 
 | |
|     public void setItemPosition(int i) {
 | |
|         this.itemPosition = i;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setShortcut(boolean z, char c) {
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public boolean showsIcon() {
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     static {
 | |
|         ACTIVE_INDICATOR_LABELED_TRANSFORM = new ActiveIndicatorTransform();
 | |
|         ACTIVE_INDICATOR_UNLABELED_TRANSFORM = new ActiveIndicatorUnlabeledTransform();
 | |
|     }
 | |
| 
 | |
|     public NavigationBarItemView(Context context) {
 | |
|         super(context);
 | |
|         this.initialized = false;
 | |
|         this.itemPosition = -1;
 | |
|         this.activeTextAppearance = 0;
 | |
|         this.activeIndicatorTransform = ACTIVE_INDICATOR_LABELED_TRANSFORM;
 | |
|         this.activeIndicatorProgress = 0.0f;
 | |
|         this.activeIndicatorEnabled = false;
 | |
|         this.activeIndicatorDesiredWidth = 0;
 | |
|         this.activeIndicatorDesiredHeight = 0;
 | |
|         this.activeIndicatorResizeable = false;
 | |
|         this.activeIndicatorMarginHorizontal = 0;
 | |
|         LayoutInflater.from(context).inflate(getItemLayoutResId(), (ViewGroup) this, true);
 | |
|         this.iconContainer = (FrameLayout) findViewById(com.google.android.material.R.id.navigation_bar_item_icon_container);
 | |
|         this.activeIndicatorView = findViewById(com.google.android.material.R.id.navigation_bar_item_active_indicator_view);
 | |
|         ImageView imageView = (ImageView) findViewById(com.google.android.material.R.id.navigation_bar_item_icon_view);
 | |
|         this.icon = imageView;
 | |
|         ViewGroup viewGroup = (ViewGroup) findViewById(com.google.android.material.R.id.navigation_bar_item_labels_group);
 | |
|         this.labelGroup = viewGroup;
 | |
|         TextView textView = (TextView) findViewById(com.google.android.material.R.id.navigation_bar_item_small_label_view);
 | |
|         this.smallLabel = textView;
 | |
|         TextView textView2 = (TextView) findViewById(com.google.android.material.R.id.navigation_bar_item_large_label_view);
 | |
|         this.largeLabel = textView2;
 | |
|         setBackgroundResource(getItemBackgroundResId());
 | |
|         this.itemPaddingTop = getResources().getDimensionPixelSize(getItemDefaultMarginResId());
 | |
|         this.itemPaddingBottom = viewGroup.getPaddingBottom();
 | |
|         this.activeIndicatorLabelPadding = getResources().getDimensionPixelSize(com.google.android.material.R.dimen.m3_navigation_item_active_indicator_label_padding);
 | |
|         ViewCompat.setImportantForAccessibility(textView, 2);
 | |
|         ViewCompat.setImportantForAccessibility(textView2, 2);
 | |
|         setFocusable(true);
 | |
|         calculateTextScaleFactors(textView.getTextSize(), textView2.getTextSize());
 | |
|         if (imageView != null) {
 | |
|             imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { // from class: com.google.android.material.navigation.NavigationBarItemView.1
 | |
|                 @Override // android.view.View.OnLayoutChangeListener
 | |
|                 public void onLayoutChange(View view, int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
 | |
|                     if (NavigationBarItemView.this.icon.getVisibility() == 0) {
 | |
|                         NavigationBarItemView navigationBarItemView = NavigationBarItemView.this;
 | |
|                         navigationBarItemView.tryUpdateBadgeBounds(navigationBarItemView.icon);
 | |
|                     }
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected int getSuggestedMinimumWidth() {
 | |
|         FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) this.labelGroup.getLayoutParams();
 | |
|         return Math.max(getSuggestedIconWidth(), layoutParams.leftMargin + this.labelGroup.getMeasuredWidth() + layoutParams.rightMargin);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected int getSuggestedMinimumHeight() {
 | |
|         FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) this.labelGroup.getLayoutParams();
 | |
|         return getSuggestedIconHeight() + (this.labelGroup.getVisibility() == 0 ? this.activeIndicatorLabelPadding : 0) + layoutParams.topMargin + this.labelGroup.getMeasuredHeight() + layoutParams.bottomMargin;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void initialize(MenuItemImpl menuItemImpl, int i) {
 | |
|         CharSequence title;
 | |
|         this.itemData = menuItemImpl;
 | |
|         setCheckable(menuItemImpl.isCheckable());
 | |
|         setChecked(menuItemImpl.isChecked());
 | |
|         setEnabled(menuItemImpl.isEnabled());
 | |
|         setIcon(menuItemImpl.getIcon());
 | |
|         setTitle(menuItemImpl.getTitle());
 | |
|         setId(menuItemImpl.getItemId());
 | |
|         if (!TextUtils.isEmpty(menuItemImpl.getContentDescription())) {
 | |
|             setContentDescription(menuItemImpl.getContentDescription());
 | |
|         }
 | |
|         if (!TextUtils.isEmpty(menuItemImpl.getTooltipText())) {
 | |
|             title = menuItemImpl.getTooltipText();
 | |
|         } else {
 | |
|             title = menuItemImpl.getTitle();
 | |
|         }
 | |
|         if (Build.VERSION.SDK_INT > 23) {
 | |
|             TooltipCompat.setTooltipText(this, title);
 | |
|         }
 | |
|         setVisibility(menuItemImpl.isVisible() ? 0 : 8);
 | |
|         this.initialized = true;
 | |
|     }
 | |
| 
 | |
|     void clear() {
 | |
|         removeBadge();
 | |
|         this.itemData = null;
 | |
|         this.activeIndicatorProgress = 0.0f;
 | |
|         this.initialized = false;
 | |
|     }
 | |
| 
 | |
|     public void setShifting(boolean z) {
 | |
|         if (this.isShifting != z) {
 | |
|             this.isShifting = z;
 | |
|             refreshChecked();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setLabelVisibilityMode(int i) {
 | |
|         if (this.labelVisibilityMode != i) {
 | |
|             this.labelVisibilityMode = i;
 | |
|             updateActiveIndicatorTransform();
 | |
|             updateActiveIndicatorLayoutParams(getWidth());
 | |
|             refreshChecked();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setTitle(CharSequence charSequence) {
 | |
|         this.smallLabel.setText(charSequence);
 | |
|         this.largeLabel.setText(charSequence);
 | |
|         MenuItemImpl menuItemImpl = this.itemData;
 | |
|         if (menuItemImpl == null || TextUtils.isEmpty(menuItemImpl.getContentDescription())) {
 | |
|             setContentDescription(charSequence);
 | |
|         }
 | |
|         MenuItemImpl menuItemImpl2 = this.itemData;
 | |
|         if (menuItemImpl2 != null && !TextUtils.isEmpty(menuItemImpl2.getTooltipText())) {
 | |
|             charSequence = this.itemData.getTooltipText();
 | |
|         }
 | |
|         if (Build.VERSION.SDK_INT > 23) {
 | |
|             TooltipCompat.setTooltipText(this, charSequence);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setCheckable(boolean z) {
 | |
|         refreshDrawableState();
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected void onSizeChanged(final int i, int i2, int i3, int i4) {
 | |
|         super.onSizeChanged(i, i2, i3, i4);
 | |
|         post(new Runnable() { // from class: com.google.android.material.navigation.NavigationBarItemView.2
 | |
|             @Override // java.lang.Runnable
 | |
|             public void run() {
 | |
|                 NavigationBarItemView.this.updateActiveIndicatorLayoutParams(i);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     private void updateActiveIndicatorTransform() {
 | |
|         if (isActiveIndicatorResizeableAndUnlabeled()) {
 | |
|             this.activeIndicatorTransform = ACTIVE_INDICATOR_UNLABELED_TRANSFORM;
 | |
|         } else {
 | |
|             this.activeIndicatorTransform = ACTIVE_INDICATOR_LABELED_TRANSFORM;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void setActiveIndicatorProgress(float f, float f2) {
 | |
|         View view = this.activeIndicatorView;
 | |
|         if (view != null) {
 | |
|             this.activeIndicatorTransform.updateForProgress(f, f2, view);
 | |
|         }
 | |
|         this.activeIndicatorProgress = f;
 | |
|     }
 | |
| 
 | |
|     private void maybeAnimateActiveIndicatorToProgress(final float f) {
 | |
|         if (!this.activeIndicatorEnabled || !this.initialized || !ViewCompat.isAttachedToWindow(this)) {
 | |
|             setActiveIndicatorProgress(f, f);
 | |
|             return;
 | |
|         }
 | |
|         ValueAnimator valueAnimator = this.activeIndicatorAnimator;
 | |
|         if (valueAnimator != null) {
 | |
|             valueAnimator.cancel();
 | |
|             this.activeIndicatorAnimator = null;
 | |
|         }
 | |
|         ValueAnimator ofFloat = ValueAnimator.ofFloat(this.activeIndicatorProgress, f);
 | |
|         this.activeIndicatorAnimator = ofFloat;
 | |
|         ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.navigation.NavigationBarItemView.3
 | |
|             @Override // android.animation.ValueAnimator.AnimatorUpdateListener
 | |
|             public void onAnimationUpdate(ValueAnimator valueAnimator2) {
 | |
|                 NavigationBarItemView.this.setActiveIndicatorProgress(((Float) valueAnimator2.getAnimatedValue()).floatValue(), f);
 | |
|             }
 | |
|         });
 | |
|         this.activeIndicatorAnimator.setInterpolator(MotionUtils.resolveThemeInterpolator(getContext(), com.google.android.material.R.attr.motionEasingEmphasizedInterpolator, AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR));
 | |
|         this.activeIndicatorAnimator.setDuration(MotionUtils.resolveThemeDuration(getContext(), com.google.android.material.R.attr.motionDurationLong2, getResources().getInteger(com.google.android.material.R.integer.material_motion_duration_long_1)));
 | |
|         this.activeIndicatorAnimator.start();
 | |
|     }
 | |
| 
 | |
|     private void refreshChecked() {
 | |
|         MenuItemImpl menuItemImpl = this.itemData;
 | |
|         if (menuItemImpl != null) {
 | |
|             setChecked(menuItemImpl.isChecked());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setChecked(boolean z) {
 | |
|         this.largeLabel.setPivotX(r0.getWidth() / 2);
 | |
|         this.largeLabel.setPivotY(r0.getBaseline());
 | |
|         this.smallLabel.setPivotX(r0.getWidth() / 2);
 | |
|         this.smallLabel.setPivotY(r0.getBaseline());
 | |
|         maybeAnimateActiveIndicatorToProgress(z ? 1.0f : 0.0f);
 | |
|         int i = this.labelVisibilityMode;
 | |
|         if (i != -1) {
 | |
|             if (i == 0) {
 | |
|                 if (z) {
 | |
|                     setViewTopMarginAndGravity(getIconOrContainer(), this.itemPaddingTop, 49);
 | |
|                     updateViewPaddingBottom(this.labelGroup, this.itemPaddingBottom);
 | |
|                     this.largeLabel.setVisibility(0);
 | |
|                 } else {
 | |
|                     setViewTopMarginAndGravity(getIconOrContainer(), this.itemPaddingTop, 17);
 | |
|                     updateViewPaddingBottom(this.labelGroup, 0);
 | |
|                     this.largeLabel.setVisibility(4);
 | |
|                 }
 | |
|                 this.smallLabel.setVisibility(4);
 | |
|             } else if (i == 1) {
 | |
|                 updateViewPaddingBottom(this.labelGroup, this.itemPaddingBottom);
 | |
|                 if (z) {
 | |
|                     setViewTopMarginAndGravity(getIconOrContainer(), (int) (this.itemPaddingTop + this.shiftAmount), 49);
 | |
|                     setViewScaleValues(this.largeLabel, 1.0f, 1.0f, 0);
 | |
|                     TextView textView = this.smallLabel;
 | |
|                     float f = this.scaleUpFactor;
 | |
|                     setViewScaleValues(textView, f, f, 4);
 | |
|                 } else {
 | |
|                     setViewTopMarginAndGravity(getIconOrContainer(), this.itemPaddingTop, 49);
 | |
|                     TextView textView2 = this.largeLabel;
 | |
|                     float f2 = this.scaleDownFactor;
 | |
|                     setViewScaleValues(textView2, f2, f2, 4);
 | |
|                     setViewScaleValues(this.smallLabel, 1.0f, 1.0f, 0);
 | |
|                 }
 | |
|             } else if (i == 2) {
 | |
|                 setViewTopMarginAndGravity(getIconOrContainer(), this.itemPaddingTop, 17);
 | |
|                 this.largeLabel.setVisibility(8);
 | |
|                 this.smallLabel.setVisibility(8);
 | |
|             }
 | |
|         } else if (this.isShifting) {
 | |
|             if (z) {
 | |
|                 setViewTopMarginAndGravity(getIconOrContainer(), this.itemPaddingTop, 49);
 | |
|                 updateViewPaddingBottom(this.labelGroup, this.itemPaddingBottom);
 | |
|                 this.largeLabel.setVisibility(0);
 | |
|             } else {
 | |
|                 setViewTopMarginAndGravity(getIconOrContainer(), this.itemPaddingTop, 17);
 | |
|                 updateViewPaddingBottom(this.labelGroup, 0);
 | |
|                 this.largeLabel.setVisibility(4);
 | |
|             }
 | |
|             this.smallLabel.setVisibility(4);
 | |
|         } else {
 | |
|             updateViewPaddingBottom(this.labelGroup, this.itemPaddingBottom);
 | |
|             if (z) {
 | |
|                 setViewTopMarginAndGravity(getIconOrContainer(), (int) (this.itemPaddingTop + this.shiftAmount), 49);
 | |
|                 setViewScaleValues(this.largeLabel, 1.0f, 1.0f, 0);
 | |
|                 TextView textView3 = this.smallLabel;
 | |
|                 float f3 = this.scaleUpFactor;
 | |
|                 setViewScaleValues(textView3, f3, f3, 4);
 | |
|             } else {
 | |
|                 setViewTopMarginAndGravity(getIconOrContainer(), this.itemPaddingTop, 49);
 | |
|                 TextView textView4 = this.largeLabel;
 | |
|                 float f4 = this.scaleDownFactor;
 | |
|                 setViewScaleValues(textView4, f4, f4, 4);
 | |
|                 setViewScaleValues(this.smallLabel, 1.0f, 1.0f, 0);
 | |
|             }
 | |
|         }
 | |
|         refreshDrawableState();
 | |
|         setSelected(z);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo accessibilityNodeInfo) {
 | |
|         super.onInitializeAccessibilityNodeInfo(accessibilityNodeInfo);
 | |
|         BadgeDrawable badgeDrawable = this.badgeDrawable;
 | |
|         if (badgeDrawable != null && badgeDrawable.isVisible()) {
 | |
|             CharSequence title = this.itemData.getTitle();
 | |
|             if (!TextUtils.isEmpty(this.itemData.getContentDescription())) {
 | |
|                 title = this.itemData.getContentDescription();
 | |
|             }
 | |
|             accessibilityNodeInfo.setContentDescription(((Object) title) + ", " + ((Object) this.badgeDrawable.getContentDescription()));
 | |
|         }
 | |
|         AccessibilityNodeInfoCompat wrap = AccessibilityNodeInfoCompat.wrap(accessibilityNodeInfo);
 | |
|         wrap.setCollectionItemInfo(AccessibilityNodeInfoCompat.CollectionItemInfoCompat.obtain(0, 1, getItemVisiblePosition(), 1, false, isSelected()));
 | |
|         if (isSelected()) {
 | |
|             wrap.setClickable(false);
 | |
|             wrap.removeAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK);
 | |
|         }
 | |
|         wrap.setRoleDescription(getResources().getString(com.google.android.material.R.string.item_view_role_description));
 | |
|     }
 | |
| 
 | |
|     private int getItemVisiblePosition() {
 | |
|         ViewGroup viewGroup = (ViewGroup) getParent();
 | |
|         int indexOfChild = viewGroup.indexOfChild(this);
 | |
|         int i = 0;
 | |
|         for (int i2 = 0; i2 < indexOfChild; i2++) {
 | |
|             View childAt = viewGroup.getChildAt(i2);
 | |
|             if ((childAt instanceof NavigationBarItemView) && childAt.getVisibility() == 0) {
 | |
|                 i++;
 | |
|             }
 | |
|         }
 | |
|         return i;
 | |
|     }
 | |
| 
 | |
|     private static void setViewTopMarginAndGravity(View view, int i, int i2) {
 | |
|         FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view.getLayoutParams();
 | |
|         layoutParams.topMargin = i;
 | |
|         layoutParams.bottomMargin = i;
 | |
|         layoutParams.gravity = i2;
 | |
|         view.setLayoutParams(layoutParams);
 | |
|     }
 | |
| 
 | |
|     private static void setViewScaleValues(View view, float f, float f2, int i) {
 | |
|         view.setScaleX(f);
 | |
|         view.setScaleY(f2);
 | |
|         view.setVisibility(i);
 | |
|     }
 | |
| 
 | |
|     private static void updateViewPaddingBottom(View view, int i) {
 | |
|         view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), view.getPaddingRight(), i);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View, androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setEnabled(boolean z) {
 | |
|         super.setEnabled(z);
 | |
|         this.smallLabel.setEnabled(z);
 | |
|         this.largeLabel.setEnabled(z);
 | |
|         this.icon.setEnabled(z);
 | |
|         if (z) {
 | |
|             ViewCompat.setPointerIcon(this, PointerIconCompat.getSystemIcon(getContext(), PointerIconCompat.TYPE_HAND));
 | |
|         } else {
 | |
|             ViewCompat.setPointerIcon(this, null);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     public int[] onCreateDrawableState(int i) {
 | |
|         int[] onCreateDrawableState = super.onCreateDrawableState(i + 1);
 | |
|         MenuItemImpl menuItemImpl = this.itemData;
 | |
|         if (menuItemImpl != null && menuItemImpl.isCheckable() && this.itemData.isChecked()) {
 | |
|             mergeDrawableStates(onCreateDrawableState, CHECKED_STATE_SET);
 | |
|         }
 | |
|         return onCreateDrawableState;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.view.menu.MenuView.ItemView
 | |
|     public void setIcon(Drawable drawable) {
 | |
|         if (drawable == this.originalIconDrawable) {
 | |
|             return;
 | |
|         }
 | |
|         this.originalIconDrawable = drawable;
 | |
|         if (drawable != null) {
 | |
|             Drawable.ConstantState constantState = drawable.getConstantState();
 | |
|             if (constantState != null) {
 | |
|                 drawable = constantState.newDrawable();
 | |
|             }
 | |
|             drawable = DrawableCompat.wrap(drawable).mutate();
 | |
|             this.wrappedIconDrawable = drawable;
 | |
|             ColorStateList colorStateList = this.iconTint;
 | |
|             if (colorStateList != null) {
 | |
|                 DrawableCompat.setTintList(drawable, colorStateList);
 | |
|             }
 | |
|         }
 | |
|         this.icon.setImageDrawable(drawable);
 | |
|     }
 | |
| 
 | |
|     public void setIconTintList(ColorStateList colorStateList) {
 | |
|         Drawable drawable;
 | |
|         this.iconTint = colorStateList;
 | |
|         if (this.itemData == null || (drawable = this.wrappedIconDrawable) == null) {
 | |
|             return;
 | |
|         }
 | |
|         DrawableCompat.setTintList(drawable, colorStateList);
 | |
|         this.wrappedIconDrawable.invalidateSelf();
 | |
|     }
 | |
| 
 | |
|     public void setIconSize(int i) {
 | |
|         FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) this.icon.getLayoutParams();
 | |
|         layoutParams.width = i;
 | |
|         layoutParams.height = i;
 | |
|         this.icon.setLayoutParams(layoutParams);
 | |
|     }
 | |
| 
 | |
|     public void setTextAppearanceInactive(int i) {
 | |
|         setTextAppearanceWithoutFontScaling(this.smallLabel, i);
 | |
|         calculateTextScaleFactors(this.smallLabel.getTextSize(), this.largeLabel.getTextSize());
 | |
|     }
 | |
| 
 | |
|     public void setTextAppearanceActive(int i) {
 | |
|         this.activeTextAppearance = i;
 | |
|         setTextAppearanceWithoutFontScaling(this.largeLabel, i);
 | |
|         calculateTextScaleFactors(this.smallLabel.getTextSize(), this.largeLabel.getTextSize());
 | |
|     }
 | |
| 
 | |
|     public void setTextAppearanceActiveBoldEnabled(boolean z) {
 | |
|         setTextAppearanceActive(this.activeTextAppearance);
 | |
|         TextView textView = this.largeLabel;
 | |
|         textView.setTypeface(textView.getTypeface(), z ? 1 : 0);
 | |
|     }
 | |
| 
 | |
|     private static void setTextAppearanceWithoutFontScaling(TextView textView, int i) {
 | |
|         TextViewCompat.setTextAppearance(textView, i);
 | |
|         int unscaledTextSize = MaterialResources.getUnscaledTextSize(textView.getContext(), i, 0);
 | |
|         if (unscaledTextSize != 0) {
 | |
|             textView.setTextSize(0, unscaledTextSize);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setTextColor(ColorStateList colorStateList) {
 | |
|         if (colorStateList != null) {
 | |
|             this.smallLabel.setTextColor(colorStateList);
 | |
|             this.largeLabel.setTextColor(colorStateList);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setItemBackground(int i) {
 | |
|         setItemBackground(i == 0 ? null : ContextCompat.getDrawable(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     public void setItemBackground(Drawable drawable) {
 | |
|         if (drawable != null && drawable.getConstantState() != null) {
 | |
|             drawable = drawable.getConstantState().newDrawable().mutate();
 | |
|         }
 | |
|         this.itemBackground = drawable;
 | |
|         refreshItemBackground();
 | |
|     }
 | |
| 
 | |
|     public void setItemRippleColor(ColorStateList colorStateList) {
 | |
|         this.itemRippleColor = colorStateList;
 | |
|         refreshItemBackground();
 | |
|     }
 | |
| 
 | |
|     private void refreshItemBackground() {
 | |
|         Drawable drawable = this.itemBackground;
 | |
|         RippleDrawable rippleDrawable = null;
 | |
|         boolean z = true;
 | |
|         if (this.itemRippleColor != null) {
 | |
|             Drawable activeIndicatorDrawable = getActiveIndicatorDrawable();
 | |
|             if (this.activeIndicatorEnabled && getActiveIndicatorDrawable() != null && this.iconContainer != null && activeIndicatorDrawable != null) {
 | |
|                 rippleDrawable = new RippleDrawable(RippleUtils.sanitizeRippleDrawableColor(this.itemRippleColor), null, activeIndicatorDrawable);
 | |
|                 z = false;
 | |
|             } else if (drawable == null) {
 | |
|                 drawable = createItemBackgroundCompat(this.itemRippleColor);
 | |
|             }
 | |
|         }
 | |
|         FrameLayout frameLayout = this.iconContainer;
 | |
|         if (frameLayout != null) {
 | |
|             frameLayout.setPadding(0, 0, 0, 0);
 | |
|             this.iconContainer.setForeground(rippleDrawable);
 | |
|         }
 | |
|         ViewCompat.setBackground(this, drawable);
 | |
|         if (Build.VERSION.SDK_INT >= 26) {
 | |
|             setDefaultFocusHighlightEnabled(z);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static Drawable createItemBackgroundCompat(ColorStateList colorStateList) {
 | |
|         return new RippleDrawable(RippleUtils.convertToRippleDrawableColor(colorStateList), null, null);
 | |
|     }
 | |
| 
 | |
|     public void setItemPaddingTop(int i) {
 | |
|         if (this.itemPaddingTop != i) {
 | |
|             this.itemPaddingTop = i;
 | |
|             refreshChecked();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setItemPaddingBottom(int i) {
 | |
|         if (this.itemPaddingBottom != i) {
 | |
|             this.itemPaddingBottom = i;
 | |
|             refreshChecked();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setActiveIndicatorLabelPadding(int i) {
 | |
|         if (this.activeIndicatorLabelPadding != i) {
 | |
|             this.activeIndicatorLabelPadding = i;
 | |
|             refreshChecked();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setActiveIndicatorEnabled(boolean z) {
 | |
|         this.activeIndicatorEnabled = z;
 | |
|         refreshItemBackground();
 | |
|         View view = this.activeIndicatorView;
 | |
|         if (view != null) {
 | |
|             view.setVisibility(z ? 0 : 8);
 | |
|             requestLayout();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setActiveIndicatorWidth(int i) {
 | |
|         this.activeIndicatorDesiredWidth = i;
 | |
|         updateActiveIndicatorLayoutParams(getWidth());
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void updateActiveIndicatorLayoutParams(int i) {
 | |
|         if (this.activeIndicatorView == null || i <= 0) {
 | |
|             return;
 | |
|         }
 | |
|         int min = Math.min(this.activeIndicatorDesiredWidth, i - (this.activeIndicatorMarginHorizontal * 2));
 | |
|         FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) this.activeIndicatorView.getLayoutParams();
 | |
|         layoutParams.height = isActiveIndicatorResizeableAndUnlabeled() ? min : this.activeIndicatorDesiredHeight;
 | |
|         layoutParams.width = min;
 | |
|         this.activeIndicatorView.setLayoutParams(layoutParams);
 | |
|     }
 | |
| 
 | |
|     public void setActiveIndicatorHeight(int i) {
 | |
|         this.activeIndicatorDesiredHeight = i;
 | |
|         updateActiveIndicatorLayoutParams(getWidth());
 | |
|     }
 | |
| 
 | |
|     public void setActiveIndicatorMarginHorizontal(int i) {
 | |
|         this.activeIndicatorMarginHorizontal = i;
 | |
|         updateActiveIndicatorLayoutParams(getWidth());
 | |
|     }
 | |
| 
 | |
|     public Drawable getActiveIndicatorDrawable() {
 | |
|         View view = this.activeIndicatorView;
 | |
|         if (view == null) {
 | |
|             return null;
 | |
|         }
 | |
|         return view.getBackground();
 | |
|     }
 | |
| 
 | |
|     public void setActiveIndicatorDrawable(Drawable drawable) {
 | |
|         View view = this.activeIndicatorView;
 | |
|         if (view == null) {
 | |
|             return;
 | |
|         }
 | |
|         view.setBackgroundDrawable(drawable);
 | |
|         refreshItemBackground();
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     public boolean dispatchTouchEvent(MotionEvent motionEvent) {
 | |
|         FrameLayout frameLayout = this.iconContainer;
 | |
|         if (frameLayout != null && this.activeIndicatorEnabled) {
 | |
|             frameLayout.dispatchTouchEvent(motionEvent);
 | |
|         }
 | |
|         return super.dispatchTouchEvent(motionEvent);
 | |
|     }
 | |
| 
 | |
|     void setBadge(BadgeDrawable badgeDrawable) {
 | |
|         if (this.badgeDrawable == badgeDrawable) {
 | |
|             return;
 | |
|         }
 | |
|         if (hasBadge() && this.icon != null) {
 | |
|             Log.w("NavigationBar", "Multiple badges shouldn't be attached to one item.");
 | |
|             tryRemoveBadgeFromAnchor(this.icon);
 | |
|         }
 | |
|         this.badgeDrawable = badgeDrawable;
 | |
|         ImageView imageView = this.icon;
 | |
|         if (imageView != null) {
 | |
|             tryAttachBadgeToAnchor(imageView);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void removeBadge() {
 | |
|         tryRemoveBadgeFromAnchor(this.icon);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void tryUpdateBadgeBounds(View view) {
 | |
|         if (hasBadge()) {
 | |
|             BadgeUtils.setBadgeDrawableBounds(this.badgeDrawable, view, getCustomParentForBadge(view));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void tryAttachBadgeToAnchor(View view) {
 | |
|         if (hasBadge() && view != null) {
 | |
|             setClipChildren(false);
 | |
|             setClipToPadding(false);
 | |
|             BadgeUtils.attachBadgeDrawable(this.badgeDrawable, view, getCustomParentForBadge(view));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void tryRemoveBadgeFromAnchor(View view) {
 | |
|         if (hasBadge()) {
 | |
|             if (view != null) {
 | |
|                 setClipChildren(true);
 | |
|                 setClipToPadding(true);
 | |
|                 BadgeUtils.detachBadgeDrawable(this.badgeDrawable, view);
 | |
|             }
 | |
|             this.badgeDrawable = null;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private FrameLayout getCustomParentForBadge(View view) {
 | |
|         if (view == this.icon && BadgeUtils.USE_COMPAT_PARENT) {
 | |
|             return (FrameLayout) this.icon.getParent();
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     private int getSuggestedIconWidth() {
 | |
|         BadgeDrawable badgeDrawable = this.badgeDrawable;
 | |
|         int minimumWidth = badgeDrawable == null ? 0 : badgeDrawable.getMinimumWidth() - this.badgeDrawable.getHorizontalOffset();
 | |
|         FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) getIconOrContainer().getLayoutParams();
 | |
|         return Math.max(minimumWidth, layoutParams.leftMargin) + this.icon.getMeasuredWidth() + Math.max(minimumWidth, layoutParams.rightMargin);
 | |
|     }
 | |
| 
 | |
|     private int getSuggestedIconHeight() {
 | |
|         return ((FrameLayout.LayoutParams) getIconOrContainer().getLayoutParams()).topMargin + getIconOrContainer().getMeasuredHeight();
 | |
|     }
 | |
| 
 | |
|     protected int getItemBackgroundResId() {
 | |
|         return com.google.android.material.R.drawable.mtrl_navigation_bar_item_background;
 | |
|     }
 | |
| 
 | |
|     protected int getItemDefaultMarginResId() {
 | |
|         return com.google.android.material.R.dimen.mtrl_navigation_bar_item_default_margin;
 | |
|     }
 | |
| 
 | |
|     private static class ActiveIndicatorTransform {
 | |
|         private static final float ALPHA_FRACTION = 0.2f;
 | |
|         private static final float SCALE_X_HIDDEN = 0.4f;
 | |
|         private static final float SCALE_X_SHOWN = 1.0f;
 | |
| 
 | |
|         protected float calculateScaleY(float f, float f2) {
 | |
|             return 1.0f;
 | |
|         }
 | |
| 
 | |
|         private ActiveIndicatorTransform() {
 | |
|         }
 | |
| 
 | |
|         protected float calculateAlpha(float f, float f2) {
 | |
|             return AnimationUtils.lerp(0.0f, 1.0f, f2 == 0.0f ? 0.8f : 0.0f, f2 == 0.0f ? 1.0f : 0.2f, f);
 | |
|         }
 | |
| 
 | |
|         protected float calculateScaleX(float f, float f2) {
 | |
|             return AnimationUtils.lerp(SCALE_X_HIDDEN, 1.0f, f);
 | |
|         }
 | |
| 
 | |
|         public void updateForProgress(float f, float f2, View view) {
 | |
|             view.setScaleX(calculateScaleX(f, f2));
 | |
|             view.setScaleY(calculateScaleY(f, f2));
 | |
|             view.setAlpha(calculateAlpha(f, f2));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static class ActiveIndicatorUnlabeledTransform extends ActiveIndicatorTransform {
 | |
|         private ActiveIndicatorUnlabeledTransform() {
 | |
|             super();
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.navigation.NavigationBarItemView.ActiveIndicatorTransform
 | |
|         protected float calculateScaleY(float f, float f2) {
 | |
|             return calculateScaleX(f, f2);
 | |
|         }
 | |
|     }
 | |
| }
 |