ADD week 5
This commit is contained in:
@@ -0,0 +1,446 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user