2025-03-31 16:33:42 +02:00

447 lines
19 KiB
Java

package com.google.android.material.navigation;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
import androidx.appcompat.view.SupportMenuInflater;
import androidx.appcompat.view.menu.MenuBuilder;
import androidx.appcompat.view.menu.MenuView;
import androidx.appcompat.widget.TintTypedArray;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.ViewCompat;
import androidx.customview.view.AbsSavedState;
import com.google.android.material.R;
import com.google.android.material.badge.BadgeDrawable;
import com.google.android.material.drawable.DrawableUtils;
import com.google.android.material.internal.ThemeEnforcement;
import com.google.android.material.resources.MaterialResources;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.shape.MaterialShapeUtils;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.theme.overlay.MaterialThemeOverlay;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/* loaded from: classes.dex */
public abstract class NavigationBarView extends FrameLayout {
public static final int LABEL_VISIBILITY_AUTO = -1;
public static final int LABEL_VISIBILITY_LABELED = 1;
public static final int LABEL_VISIBILITY_SELECTED = 0;
public static final int LABEL_VISIBILITY_UNLABELED = 2;
private static final int MENU_PRESENTER_ID = 1;
private final NavigationBarMenu menu;
private MenuInflater menuInflater;
private final NavigationBarMenuView menuView;
private final NavigationBarPresenter presenter;
private OnItemReselectedListener reselectedListener;
private OnItemSelectedListener selectedListener;
@Retention(RetentionPolicy.SOURCE)
public @interface LabelVisibility {
}
public interface OnItemReselectedListener {
void onNavigationItemReselected(MenuItem menuItem);
}
public interface OnItemSelectedListener {
boolean onNavigationItemSelected(MenuItem menuItem);
}
protected abstract NavigationBarMenuView createNavigationBarMenuView(Context context);
public abstract int getMaxItemCount();
public Menu getMenu() {
return this.menu;
}
public MenuView getMenuView() {
return this.menuView;
}
public NavigationBarPresenter getPresenter() {
return this.presenter;
}
public void setOnItemReselectedListener(OnItemReselectedListener onItemReselectedListener) {
this.reselectedListener = onItemReselectedListener;
}
public void setOnItemSelectedListener(OnItemSelectedListener onItemSelectedListener) {
this.selectedListener = onItemSelectedListener;
}
public NavigationBarView(Context context, AttributeSet attributeSet, int i, int i2) {
super(MaterialThemeOverlay.wrap(context, attributeSet, i, i2), attributeSet, i);
NavigationBarPresenter navigationBarPresenter = new NavigationBarPresenter();
this.presenter = navigationBarPresenter;
Context context2 = getContext();
TintTypedArray obtainTintedStyledAttributes = ThemeEnforcement.obtainTintedStyledAttributes(context2, attributeSet, R.styleable.NavigationBarView, i, i2, R.styleable.NavigationBarView_itemTextAppearanceInactive, R.styleable.NavigationBarView_itemTextAppearanceActive);
NavigationBarMenu navigationBarMenu = new NavigationBarMenu(context2, getClass(), getMaxItemCount());
this.menu = navigationBarMenu;
NavigationBarMenuView createNavigationBarMenuView = createNavigationBarMenuView(context2);
this.menuView = createNavigationBarMenuView;
navigationBarPresenter.setMenuView(createNavigationBarMenuView);
navigationBarPresenter.setId(1);
createNavigationBarMenuView.setPresenter(navigationBarPresenter);
navigationBarMenu.addMenuPresenter(navigationBarPresenter);
navigationBarPresenter.initForMenu(getContext(), navigationBarMenu);
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_itemIconTint)) {
createNavigationBarMenuView.setIconTintList(obtainTintedStyledAttributes.getColorStateList(R.styleable.NavigationBarView_itemIconTint));
} else {
createNavigationBarMenuView.setIconTintList(createNavigationBarMenuView.createDefaultColorStateList(android.R.attr.textColorSecondary));
}
setItemIconSize(obtainTintedStyledAttributes.getDimensionPixelSize(R.styleable.NavigationBarView_itemIconSize, getResources().getDimensionPixelSize(R.dimen.mtrl_navigation_bar_item_default_icon_size)));
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_itemTextAppearanceInactive)) {
setItemTextAppearanceInactive(obtainTintedStyledAttributes.getResourceId(R.styleable.NavigationBarView_itemTextAppearanceInactive, 0));
}
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_itemTextAppearanceActive)) {
setItemTextAppearanceActive(obtainTintedStyledAttributes.getResourceId(R.styleable.NavigationBarView_itemTextAppearanceActive, 0));
}
setItemTextAppearanceActiveBoldEnabled(obtainTintedStyledAttributes.getBoolean(R.styleable.NavigationBarView_itemTextAppearanceActiveBoldEnabled, true));
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_itemTextColor)) {
setItemTextColor(obtainTintedStyledAttributes.getColorStateList(R.styleable.NavigationBarView_itemTextColor));
}
Drawable background = getBackground();
ColorStateList colorStateListOrNull = DrawableUtils.getColorStateListOrNull(background);
if (background == null || colorStateListOrNull != null) {
MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable(ShapeAppearanceModel.builder(context2, attributeSet, i, i2).build());
if (colorStateListOrNull != null) {
materialShapeDrawable.setFillColor(colorStateListOrNull);
}
materialShapeDrawable.initializeElevationOverlay(context2);
ViewCompat.setBackground(this, materialShapeDrawable);
}
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_itemPaddingTop)) {
setItemPaddingTop(obtainTintedStyledAttributes.getDimensionPixelSize(R.styleable.NavigationBarView_itemPaddingTop, 0));
}
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_itemPaddingBottom)) {
setItemPaddingBottom(obtainTintedStyledAttributes.getDimensionPixelSize(R.styleable.NavigationBarView_itemPaddingBottom, 0));
}
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_activeIndicatorLabelPadding)) {
setActiveIndicatorLabelPadding(obtainTintedStyledAttributes.getDimensionPixelSize(R.styleable.NavigationBarView_activeIndicatorLabelPadding, 0));
}
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_elevation)) {
setElevation(obtainTintedStyledAttributes.getDimensionPixelSize(R.styleable.NavigationBarView_elevation, 0));
}
DrawableCompat.setTintList(getBackground().mutate(), MaterialResources.getColorStateList(context2, obtainTintedStyledAttributes, R.styleable.NavigationBarView_backgroundTint));
setLabelVisibilityMode(obtainTintedStyledAttributes.getInteger(R.styleable.NavigationBarView_labelVisibilityMode, -1));
int resourceId = obtainTintedStyledAttributes.getResourceId(R.styleable.NavigationBarView_itemBackground, 0);
if (resourceId != 0) {
createNavigationBarMenuView.setItemBackgroundRes(resourceId);
} else {
setItemRippleColor(MaterialResources.getColorStateList(context2, obtainTintedStyledAttributes, R.styleable.NavigationBarView_itemRippleColor));
}
int resourceId2 = obtainTintedStyledAttributes.getResourceId(R.styleable.NavigationBarView_itemActiveIndicatorStyle, 0);
if (resourceId2 != 0) {
setItemActiveIndicatorEnabled(true);
TypedArray obtainStyledAttributes = context2.obtainStyledAttributes(resourceId2, R.styleable.NavigationBarActiveIndicator);
setItemActiveIndicatorWidth(obtainStyledAttributes.getDimensionPixelSize(R.styleable.NavigationBarActiveIndicator_android_width, 0));
setItemActiveIndicatorHeight(obtainStyledAttributes.getDimensionPixelSize(R.styleable.NavigationBarActiveIndicator_android_height, 0));
setItemActiveIndicatorMarginHorizontal(obtainStyledAttributes.getDimensionPixelOffset(R.styleable.NavigationBarActiveIndicator_marginHorizontal, 0));
setItemActiveIndicatorColor(MaterialResources.getColorStateList(context2, obtainStyledAttributes, R.styleable.NavigationBarActiveIndicator_android_color));
setItemActiveIndicatorShapeAppearance(ShapeAppearanceModel.builder(context2, obtainStyledAttributes.getResourceId(R.styleable.NavigationBarActiveIndicator_shapeAppearance, 0), 0).build());
obtainStyledAttributes.recycle();
}
if (obtainTintedStyledAttributes.hasValue(R.styleable.NavigationBarView_menu)) {
inflateMenu(obtainTintedStyledAttributes.getResourceId(R.styleable.NavigationBarView_menu, 0));
}
obtainTintedStyledAttributes.recycle();
addView(createNavigationBarMenuView);
navigationBarMenu.setCallback(new MenuBuilder.Callback() { // from class: com.google.android.material.navigation.NavigationBarView.1
@Override // androidx.appcompat.view.menu.MenuBuilder.Callback
public void onMenuModeChange(MenuBuilder menuBuilder) {
}
@Override // androidx.appcompat.view.menu.MenuBuilder.Callback
public boolean onMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem) {
if (NavigationBarView.this.reselectedListener == null || menuItem.getItemId() != NavigationBarView.this.getSelectedItemId()) {
return (NavigationBarView.this.selectedListener == null || NavigationBarView.this.selectedListener.onNavigationItemSelected(menuItem)) ? false : true;
}
NavigationBarView.this.reselectedListener.onNavigationItemReselected(menuItem);
return true;
}
});
}
@Override // android.view.ViewGroup, android.view.View
protected void onAttachedToWindow() {
super.onAttachedToWindow();
MaterialShapeUtils.setParentAbsoluteElevation(this);
}
@Override // android.view.View
public void setElevation(float f) {
super.setElevation(f);
MaterialShapeUtils.setElevation(this, f);
}
public void inflateMenu(int i) {
this.presenter.setUpdateSuspended(true);
getMenuInflater().inflate(i, this.menu);
this.presenter.setUpdateSuspended(false);
this.presenter.updateMenuView(true);
}
public ColorStateList getItemIconTintList() {
return this.menuView.getIconTintList();
}
public void setItemIconTintList(ColorStateList colorStateList) {
this.menuView.setIconTintList(colorStateList);
}
public void setItemIconSize(int i) {
this.menuView.setItemIconSize(i);
}
public void setItemIconSizeRes(int i) {
setItemIconSize(getResources().getDimensionPixelSize(i));
}
public int getItemIconSize() {
return this.menuView.getItemIconSize();
}
public ColorStateList getItemTextColor() {
return this.menuView.getItemTextColor();
}
public void setItemTextColor(ColorStateList colorStateList) {
this.menuView.setItemTextColor(colorStateList);
}
@Deprecated
public int getItemBackgroundResource() {
return this.menuView.getItemBackgroundRes();
}
public void setItemBackgroundResource(int i) {
this.menuView.setItemBackgroundRes(i);
}
public Drawable getItemBackground() {
return this.menuView.getItemBackground();
}
public void setItemBackground(Drawable drawable) {
this.menuView.setItemBackground(drawable);
}
public ColorStateList getItemRippleColor() {
return this.menuView.getItemRippleColor();
}
public void setItemRippleColor(ColorStateList colorStateList) {
this.menuView.setItemRippleColor(colorStateList);
}
public int getItemPaddingTop() {
return this.menuView.getItemPaddingTop();
}
public void setItemPaddingTop(int i) {
this.menuView.setItemPaddingTop(i);
}
public int getItemPaddingBottom() {
return this.menuView.getItemPaddingBottom();
}
public void setItemPaddingBottom(int i) {
this.menuView.setItemPaddingBottom(i);
}
public void setActiveIndicatorLabelPadding(int i) {
this.menuView.setActiveIndicatorLabelPadding(i);
}
public int getActiveIndicatorLabelPadding() {
return this.menuView.getActiveIndicatorLabelPadding();
}
public boolean isItemActiveIndicatorEnabled() {
return this.menuView.getItemActiveIndicatorEnabled();
}
public void setItemActiveIndicatorEnabled(boolean z) {
this.menuView.setItemActiveIndicatorEnabled(z);
}
public int getItemActiveIndicatorWidth() {
return this.menuView.getItemActiveIndicatorWidth();
}
public void setItemActiveIndicatorWidth(int i) {
this.menuView.setItemActiveIndicatorWidth(i);
}
public int getItemActiveIndicatorHeight() {
return this.menuView.getItemActiveIndicatorHeight();
}
public void setItemActiveIndicatorHeight(int i) {
this.menuView.setItemActiveIndicatorHeight(i);
}
public int getItemActiveIndicatorMarginHorizontal() {
return this.menuView.getItemActiveIndicatorMarginHorizontal();
}
public void setItemActiveIndicatorMarginHorizontal(int i) {
this.menuView.setItemActiveIndicatorMarginHorizontal(i);
}
public ShapeAppearanceModel getItemActiveIndicatorShapeAppearance() {
return this.menuView.getItemActiveIndicatorShapeAppearance();
}
public void setItemActiveIndicatorShapeAppearance(ShapeAppearanceModel shapeAppearanceModel) {
this.menuView.setItemActiveIndicatorShapeAppearance(shapeAppearanceModel);
}
public ColorStateList getItemActiveIndicatorColor() {
return this.menuView.getItemActiveIndicatorColor();
}
public void setItemActiveIndicatorColor(ColorStateList colorStateList) {
this.menuView.setItemActiveIndicatorColor(colorStateList);
}
public int getSelectedItemId() {
return this.menuView.getSelectedItemId();
}
public void setSelectedItemId(int i) {
MenuItem findItem = this.menu.findItem(i);
if (findItem == null || this.menu.performItemAction(findItem, this.presenter, 0)) {
return;
}
findItem.setChecked(true);
}
public void setLabelVisibilityMode(int i) {
if (this.menuView.getLabelVisibilityMode() != i) {
this.menuView.setLabelVisibilityMode(i);
this.presenter.updateMenuView(false);
}
}
public int getLabelVisibilityMode() {
return this.menuView.getLabelVisibilityMode();
}
public void setItemTextAppearanceInactive(int i) {
this.menuView.setItemTextAppearanceInactive(i);
}
public int getItemTextAppearanceInactive() {
return this.menuView.getItemTextAppearanceInactive();
}
public void setItemTextAppearanceActive(int i) {
this.menuView.setItemTextAppearanceActive(i);
}
public void setItemTextAppearanceActiveBoldEnabled(boolean z) {
this.menuView.setItemTextAppearanceActiveBoldEnabled(z);
}
public int getItemTextAppearanceActive() {
return this.menuView.getItemTextAppearanceActive();
}
public void setItemOnTouchListener(int i, View.OnTouchListener onTouchListener) {
this.menuView.setItemOnTouchListener(i, onTouchListener);
}
public BadgeDrawable getBadge(int i) {
return this.menuView.getBadge(i);
}
public BadgeDrawable getOrCreateBadge(int i) {
return this.menuView.getOrCreateBadge(i);
}
public void removeBadge(int i) {
this.menuView.removeBadge(i);
}
private MenuInflater getMenuInflater() {
if (this.menuInflater == null) {
this.menuInflater = new SupportMenuInflater(getContext());
}
return this.menuInflater;
}
@Override // android.view.View
protected Parcelable onSaveInstanceState() {
SavedState savedState = new SavedState(super.onSaveInstanceState());
savedState.menuPresenterState = new Bundle();
this.menu.savePresenterStates(savedState.menuPresenterState);
return savedState;
}
@Override // android.view.View
protected void onRestoreInstanceState(Parcelable parcelable) {
if (!(parcelable instanceof SavedState)) {
super.onRestoreInstanceState(parcelable);
return;
}
SavedState savedState = (SavedState) parcelable;
super.onRestoreInstanceState(savedState.getSuperState());
this.menu.restorePresenterStates(savedState.menuPresenterState);
}
static class SavedState extends AbsSavedState {
public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.ClassLoaderCreator<SavedState>() { // from class: com.google.android.material.navigation.NavigationBarView.SavedState.1
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.ClassLoaderCreator
public SavedState createFromParcel(Parcel parcel, ClassLoader classLoader) {
return new SavedState(parcel, classLoader);
}
@Override // android.os.Parcelable.Creator
public SavedState createFromParcel(Parcel parcel) {
return new SavedState(parcel, null);
}
@Override // android.os.Parcelable.Creator
public SavedState[] newArray(int i) {
return new SavedState[i];
}
};
Bundle menuPresenterState;
public SavedState(Parcelable parcelable) {
super(parcelable);
}
public SavedState(Parcel parcel, ClassLoader classLoader) {
super(parcel, classLoader);
readFromParcel(parcel, classLoader == null ? getClass().getClassLoader() : classLoader);
}
@Override // androidx.customview.view.AbsSavedState, android.os.Parcelable
public void writeToParcel(Parcel parcel, int i) {
super.writeToParcel(parcel, i);
parcel.writeBundle(this.menuPresenterState);
}
private void readFromParcel(Parcel parcel, ClassLoader classLoader) {
this.menuPresenterState = parcel.readBundle(classLoader);
}
}
}