921 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			921 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.bottomappbar;
 | |
| 
 | |
| import android.animation.Animator;
 | |
| import android.animation.AnimatorListenerAdapter;
 | |
| import android.animation.AnimatorSet;
 | |
| import android.animation.ObjectAnimator;
 | |
| import android.content.Context;
 | |
| import android.content.res.ColorStateList;
 | |
| import android.graphics.Rect;
 | |
| import android.graphics.RectF;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.os.Parcel;
 | |
| import android.os.Parcelable;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import androidx.appcompat.widget.ActionMenuView;
 | |
| import androidx.appcompat.widget.Toolbar;
 | |
| import androidx.coordinatorlayout.widget.CoordinatorLayout;
 | |
| import androidx.core.graphics.drawable.DrawableCompat;
 | |
| import androidx.core.view.GravityCompat;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.customview.view.AbsSavedState;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.animation.AnimationUtils;
 | |
| import com.google.android.material.animation.TransformationCallback;
 | |
| import com.google.android.material.behavior.HideBottomViewOnScrollBehavior;
 | |
| import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
 | |
| import com.google.android.material.floatingactionbutton.FloatingActionButton;
 | |
| import com.google.android.material.internal.ViewUtils;
 | |
| import com.google.android.material.motion.MotionUtils;
 | |
| import com.google.android.material.shape.MaterialShapeDrawable;
 | |
| import com.google.android.material.shape.MaterialShapeUtils;
 | |
| import java.lang.annotation.Retention;
 | |
| import java.lang.annotation.RetentionPolicy;
 | |
| import java.lang.ref.WeakReference;
 | |
| import java.util.ArrayList;
 | |
| import java.util.Iterator;
 | |
| import java.util.List;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class BottomAppBar extends Toolbar implements CoordinatorLayout.AttachedBehavior {
 | |
|     private static final int FAB_ALIGNMENT_ANIM_DURATION_DEFAULT = 300;
 | |
|     private static final float FAB_ALIGNMENT_ANIM_EASING_MIDPOINT = 0.2f;
 | |
|     public static final int FAB_ALIGNMENT_MODE_CENTER = 0;
 | |
|     public static final int FAB_ALIGNMENT_MODE_END = 1;
 | |
|     public static final int FAB_ANCHOR_MODE_CRADLE = 1;
 | |
|     public static final int FAB_ANCHOR_MODE_EMBED = 0;
 | |
|     public static final int FAB_ANIMATION_MODE_SCALE = 0;
 | |
|     public static final int FAB_ANIMATION_MODE_SLIDE = 1;
 | |
|     public static final int MENU_ALIGNMENT_MODE_AUTO = 0;
 | |
|     public static final int MENU_ALIGNMENT_MODE_START = 1;
 | |
|     private static final int NO_FAB_END_MARGIN = -1;
 | |
|     private static final int NO_MENU_RES_ID = 0;
 | |
|     private int animatingModeChangeCounter;
 | |
|     private ArrayList<AnimationListener> animationListeners;
 | |
|     private Behavior behavior;
 | |
|     private int bottomInset;
 | |
|     private int fabAlignmentMode;
 | |
|     private int fabAlignmentModeEndMargin;
 | |
|     private int fabAnchorMode;
 | |
|     AnimatorListenerAdapter fabAnimationListener;
 | |
|     private int fabAnimationMode;
 | |
|     private boolean fabAttached;
 | |
|     private final int fabOffsetEndMode;
 | |
|     TransformationCallback<FloatingActionButton> fabTransformationCallback;
 | |
|     private boolean hideOnScroll;
 | |
|     private int leftInset;
 | |
|     private final MaterialShapeDrawable materialShapeDrawable;
 | |
|     private int menuAlignmentMode;
 | |
|     private boolean menuAnimatingWithFabAlignmentMode;
 | |
|     private Animator menuAnimator;
 | |
|     private Animator modeAnimator;
 | |
|     private Integer navigationIconTint;
 | |
|     private final boolean paddingBottomSystemWindowInsets;
 | |
|     private final boolean paddingLeftSystemWindowInsets;
 | |
|     private final boolean paddingRightSystemWindowInsets;
 | |
|     private int pendingMenuResId;
 | |
|     private final boolean removeEmbeddedFabElevation;
 | |
|     private int rightInset;
 | |
|     private static final int DEF_STYLE_RES = R.style.Widget_MaterialComponents_BottomAppBar;
 | |
|     private static final int FAB_ALIGNMENT_ANIM_DURATION_ATTR = R.attr.motionDurationLong2;
 | |
|     private static final int FAB_ALIGNMENT_ANIM_EASING_ATTR = R.attr.motionEasingEmphasizedInterpolator;
 | |
| 
 | |
|     interface AnimationListener {
 | |
|         void onAnimationEnd(BottomAppBar bottomAppBar);
 | |
| 
 | |
|         void onAnimationStart(BottomAppBar bottomAppBar);
 | |
|     }
 | |
| 
 | |
|     @Retention(RetentionPolicy.SOURCE)
 | |
|     public @interface FabAlignmentMode {
 | |
|     }
 | |
| 
 | |
|     @Retention(RetentionPolicy.SOURCE)
 | |
|     public @interface FabAnchorMode {
 | |
|     }
 | |
| 
 | |
|     @Retention(RetentionPolicy.SOURCE)
 | |
|     public @interface FabAnimationMode {
 | |
|     }
 | |
| 
 | |
|     @Retention(RetentionPolicy.SOURCE)
 | |
|     public @interface MenuAlignmentMode {
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public int getBottomInset() {
 | |
|         return this.bottomInset;
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public int getLeftInset() {
 | |
|         return this.leftInset;
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public int getRightInset() {
 | |
|         return this.rightInset;
 | |
|     }
 | |
| 
 | |
|     public int getFabAlignmentMode() {
 | |
|         return this.fabAlignmentMode;
 | |
|     }
 | |
| 
 | |
|     public int getFabAlignmentModeEndMargin() {
 | |
|         return this.fabAlignmentModeEndMargin;
 | |
|     }
 | |
| 
 | |
|     public int getFabAnchorMode() {
 | |
|         return this.fabAnchorMode;
 | |
|     }
 | |
| 
 | |
|     public int getFabAnimationMode() {
 | |
|         return this.fabAnimationMode;
 | |
|     }
 | |
| 
 | |
|     public boolean getHideOnScroll() {
 | |
|         return this.hideOnScroll;
 | |
|     }
 | |
| 
 | |
|     public int getMenuAlignmentMode() {
 | |
|         return this.menuAlignmentMode;
 | |
|     }
 | |
| 
 | |
|     public void setFabAnimationMode(int i) {
 | |
|         this.fabAnimationMode = i;
 | |
|     }
 | |
| 
 | |
|     public void setHideOnScroll(boolean z) {
 | |
|         this.hideOnScroll = z;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.Toolbar
 | |
|     public void setSubtitle(CharSequence charSequence) {
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.Toolbar
 | |
|     public void setTitle(CharSequence charSequence) {
 | |
|     }
 | |
| 
 | |
|     public BottomAppBar(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public BottomAppBar(Context context, AttributeSet attributeSet) {
 | |
|         this(context, attributeSet, R.attr.bottomAppBarStyle);
 | |
|     }
 | |
| 
 | |
|     /* JADX WARN: Illegal instructions before constructor call */
 | |
|     /*
 | |
|         Code decompiled incorrectly, please refer to instructions dump.
 | |
|         To view partially-correct add '--show-bad-code' argument
 | |
|     */
 | |
|     public BottomAppBar(android.content.Context r13, android.util.AttributeSet r14, int r15) {
 | |
|         /*
 | |
|             Method dump skipped, instructions count: 277
 | |
|             To view this dump add '--comments-level debug' option
 | |
|         */
 | |
|         throw new UnsupportedOperationException("Method not decompiled: com.google.android.material.bottomappbar.BottomAppBar.<init>(android.content.Context, android.util.AttributeSet, int):void");
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.Toolbar
 | |
|     public void setNavigationIcon(Drawable drawable) {
 | |
|         super.setNavigationIcon(maybeTintNavigationIcon(drawable));
 | |
|     }
 | |
| 
 | |
|     public void setNavigationIconTint(int i) {
 | |
|         this.navigationIconTint = Integer.valueOf(i);
 | |
|         Drawable navigationIcon = getNavigationIcon();
 | |
|         if (navigationIcon != null) {
 | |
|             setNavigationIcon(navigationIcon);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setFabAlignmentMode(int i) {
 | |
|         setFabAlignmentModeAndReplaceMenu(i, 0);
 | |
|     }
 | |
| 
 | |
|     public void setFabAlignmentModeAndReplaceMenu(int i, int i2) {
 | |
|         this.pendingMenuResId = i2;
 | |
|         this.menuAnimatingWithFabAlignmentMode = true;
 | |
|         maybeAnimateMenuView(i, this.fabAttached);
 | |
|         maybeAnimateModeChange(i);
 | |
|         this.fabAlignmentMode = i;
 | |
|     }
 | |
| 
 | |
|     public void setFabAnchorMode(int i) {
 | |
|         this.fabAnchorMode = i;
 | |
|         setCutoutStateAndTranslateFab();
 | |
|         View findDependentView = findDependentView();
 | |
|         if (findDependentView != null) {
 | |
|             updateFabAnchorGravity(this, findDependentView);
 | |
|             findDependentView.requestLayout();
 | |
|             this.materialShapeDrawable.invalidateSelf();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public static void updateFabAnchorGravity(BottomAppBar bottomAppBar, View view) {
 | |
|         CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) view.getLayoutParams();
 | |
|         layoutParams.anchorGravity = 17;
 | |
|         if (bottomAppBar.fabAnchorMode == 1) {
 | |
|             layoutParams.anchorGravity |= 48;
 | |
|         }
 | |
|         if (bottomAppBar.fabAnchorMode == 0) {
 | |
|             layoutParams.anchorGravity |= 80;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setMenuAlignmentMode(int i) {
 | |
|         if (this.menuAlignmentMode != i) {
 | |
|             this.menuAlignmentMode = i;
 | |
|             ActionMenuView actionMenuView = getActionMenuView();
 | |
|             if (actionMenuView != null) {
 | |
|                 translateActionMenuView(actionMenuView, this.fabAlignmentMode, isFabVisibleOrWillBeShown());
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setBackgroundTint(ColorStateList colorStateList) {
 | |
|         DrawableCompat.setTintList(this.materialShapeDrawable, colorStateList);
 | |
|     }
 | |
| 
 | |
|     public ColorStateList getBackgroundTint() {
 | |
|         return this.materialShapeDrawable.getTintList();
 | |
|     }
 | |
| 
 | |
|     public float getFabCradleMargin() {
 | |
|         return getTopEdgeTreatment().getFabCradleMargin();
 | |
|     }
 | |
| 
 | |
|     public void setFabCradleMargin(float f) {
 | |
|         if (f != getFabCradleMargin()) {
 | |
|             getTopEdgeTreatment().setFabCradleMargin(f);
 | |
|             this.materialShapeDrawable.invalidateSelf();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public float getFabCradleRoundedCornerRadius() {
 | |
|         return getTopEdgeTreatment().getFabCradleRoundedCornerRadius();
 | |
|     }
 | |
| 
 | |
|     public void setFabCradleRoundedCornerRadius(float f) {
 | |
|         if (f != getFabCradleRoundedCornerRadius()) {
 | |
|             getTopEdgeTreatment().setFabCradleRoundedCornerRadius(f);
 | |
|             this.materialShapeDrawable.invalidateSelf();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public float getCradleVerticalOffset() {
 | |
|         return getTopEdgeTreatment().getCradleVerticalOffset();
 | |
|     }
 | |
| 
 | |
|     public void setCradleVerticalOffset(float f) {
 | |
|         if (f != getCradleVerticalOffset()) {
 | |
|             getTopEdgeTreatment().setCradleVerticalOffset(f);
 | |
|             this.materialShapeDrawable.invalidateSelf();
 | |
|             setCutoutStateAndTranslateFab();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setFabAlignmentModeEndMargin(int i) {
 | |
|         if (this.fabAlignmentModeEndMargin != i) {
 | |
|             this.fabAlignmentModeEndMargin = i;
 | |
|             setCutoutStateAndTranslateFab();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void performHide() {
 | |
|         performHide(true);
 | |
|     }
 | |
| 
 | |
|     public void performHide(boolean z) {
 | |
|         getBehavior().slideDown(this, z);
 | |
|     }
 | |
| 
 | |
|     public void performShow() {
 | |
|         performShow(true);
 | |
|     }
 | |
| 
 | |
|     public void performShow(boolean z) {
 | |
|         getBehavior().slideUp(this, z);
 | |
|     }
 | |
| 
 | |
|     public boolean isScrolledDown() {
 | |
|         return getBehavior().isScrolledDown();
 | |
|     }
 | |
| 
 | |
|     public boolean isScrolledUp() {
 | |
|         return getBehavior().isScrolledUp();
 | |
|     }
 | |
| 
 | |
|     public void addOnScrollStateChangedListener(HideBottomViewOnScrollBehavior.OnScrollStateChangedListener onScrollStateChangedListener) {
 | |
|         getBehavior().addOnScrollStateChangedListener(onScrollStateChangedListener);
 | |
|     }
 | |
| 
 | |
|     public void removeOnScrollStateChangedListener(HideBottomViewOnScrollBehavior.OnScrollStateChangedListener onScrollStateChangedListener) {
 | |
|         getBehavior().removeOnScrollStateChangedListener(onScrollStateChangedListener);
 | |
|     }
 | |
| 
 | |
|     public void clearOnScrollStateChangedListeners() {
 | |
|         getBehavior().clearOnScrollStateChangedListeners();
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void setElevation(float f) {
 | |
|         this.materialShapeDrawable.setElevation(f);
 | |
|         getBehavior().setAdditionalHiddenOffsetY(this, this.materialShapeDrawable.getShadowRadius() - this.materialShapeDrawable.getShadowOffsetY());
 | |
|     }
 | |
| 
 | |
|     public void replaceMenu(int i) {
 | |
|         if (i != 0) {
 | |
|             this.pendingMenuResId = 0;
 | |
|             getMenu().clear();
 | |
|             inflateMenu(i);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void addAnimationListener(AnimationListener animationListener) {
 | |
|         if (this.animationListeners == null) {
 | |
|             this.animationListeners = new ArrayList<>();
 | |
|         }
 | |
|         this.animationListeners.add(animationListener);
 | |
|     }
 | |
| 
 | |
|     void removeAnimationListener(AnimationListener animationListener) {
 | |
|         ArrayList<AnimationListener> arrayList = this.animationListeners;
 | |
|         if (arrayList == null) {
 | |
|             return;
 | |
|         }
 | |
|         arrayList.remove(animationListener);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void dispatchAnimationStart() {
 | |
|         ArrayList<AnimationListener> arrayList;
 | |
|         int i = this.animatingModeChangeCounter;
 | |
|         this.animatingModeChangeCounter = i + 1;
 | |
|         if (i != 0 || (arrayList = this.animationListeners) == null) {
 | |
|             return;
 | |
|         }
 | |
|         Iterator<AnimationListener> it = arrayList.iterator();
 | |
|         while (it.hasNext()) {
 | |
|             it.next().onAnimationStart(this);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void dispatchAnimationEnd() {
 | |
|         ArrayList<AnimationListener> arrayList;
 | |
|         int i = this.animatingModeChangeCounter - 1;
 | |
|         this.animatingModeChangeCounter = i;
 | |
|         if (i != 0 || (arrayList = this.animationListeners) == null) {
 | |
|             return;
 | |
|         }
 | |
|         Iterator<AnimationListener> it = arrayList.iterator();
 | |
|         while (it.hasNext()) {
 | |
|             it.next().onAnimationEnd(this);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     boolean setFabDiameter(int i) {
 | |
|         float f = i;
 | |
|         if (f == getTopEdgeTreatment().getFabDiameter()) {
 | |
|             return false;
 | |
|         }
 | |
|         getTopEdgeTreatment().setFabDiameter(f);
 | |
|         this.materialShapeDrawable.invalidateSelf();
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     void setFabCornerSize(float f) {
 | |
|         if (f != getTopEdgeTreatment().getFabCornerRadius()) {
 | |
|             getTopEdgeTreatment().setFabCornerSize(f);
 | |
|             this.materialShapeDrawable.invalidateSelf();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void maybeAnimateModeChange(int i) {
 | |
|         if (this.fabAlignmentMode == i || !ViewCompat.isLaidOut(this)) {
 | |
|             return;
 | |
|         }
 | |
|         Animator animator = this.modeAnimator;
 | |
|         if (animator != null) {
 | |
|             animator.cancel();
 | |
|         }
 | |
|         ArrayList arrayList = new ArrayList();
 | |
|         if (this.fabAnimationMode == 1) {
 | |
|             createFabTranslationXAnimation(i, arrayList);
 | |
|         } else {
 | |
|             createFabDefaultXAnimation(i, arrayList);
 | |
|         }
 | |
|         AnimatorSet animatorSet = new AnimatorSet();
 | |
|         animatorSet.playTogether(arrayList);
 | |
|         animatorSet.setInterpolator(MotionUtils.resolveThemeInterpolator(getContext(), FAB_ALIGNMENT_ANIM_EASING_ATTR, AnimationUtils.LINEAR_INTERPOLATOR));
 | |
|         this.modeAnimator = animatorSet;
 | |
|         animatorSet.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.bottomappbar.BottomAppBar.4
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationStart(Animator animator2) {
 | |
|                 BottomAppBar.this.dispatchAnimationStart();
 | |
|             }
 | |
| 
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationEnd(Animator animator2) {
 | |
|                 BottomAppBar.this.dispatchAnimationEnd();
 | |
|                 BottomAppBar.this.modeAnimator = null;
 | |
|             }
 | |
|         });
 | |
|         this.modeAnimator.start();
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public FloatingActionButton findDependentFab() {
 | |
|         View findDependentView = findDependentView();
 | |
|         if (findDependentView instanceof FloatingActionButton) {
 | |
|             return (FloatingActionButton) findDependentView;
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public View findDependentView() {
 | |
|         if (!(getParent() instanceof CoordinatorLayout)) {
 | |
|             return null;
 | |
|         }
 | |
|         for (View view : ((CoordinatorLayout) getParent()).getDependents(this)) {
 | |
|             if ((view instanceof FloatingActionButton) || (view instanceof ExtendedFloatingActionButton)) {
 | |
|                 return view;
 | |
|             }
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     private boolean isFabVisibleOrWillBeShown() {
 | |
|         FloatingActionButton findDependentFab = findDependentFab();
 | |
|         return findDependentFab != null && findDependentFab.isOrWillBeShown();
 | |
|     }
 | |
| 
 | |
|     protected void createFabDefaultXAnimation(final int i, List<Animator> list) {
 | |
|         FloatingActionButton findDependentFab = findDependentFab();
 | |
|         if (findDependentFab == null || findDependentFab.isOrWillBeHidden()) {
 | |
|             return;
 | |
|         }
 | |
|         dispatchAnimationStart();
 | |
|         findDependentFab.hide(new FloatingActionButton.OnVisibilityChangedListener() { // from class: com.google.android.material.bottomappbar.BottomAppBar.5
 | |
|             @Override // com.google.android.material.floatingactionbutton.FloatingActionButton.OnVisibilityChangedListener
 | |
|             public void onHidden(FloatingActionButton floatingActionButton) {
 | |
|                 floatingActionButton.setTranslationX(BottomAppBar.this.getFabTranslationX(i));
 | |
|                 floatingActionButton.show(new FloatingActionButton.OnVisibilityChangedListener() { // from class: com.google.android.material.bottomappbar.BottomAppBar.5.1
 | |
|                     @Override // com.google.android.material.floatingactionbutton.FloatingActionButton.OnVisibilityChangedListener
 | |
|                     public void onShown(FloatingActionButton floatingActionButton2) {
 | |
|                         BottomAppBar.this.dispatchAnimationEnd();
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     private void createFabTranslationXAnimation(int i, List<Animator> list) {
 | |
|         ObjectAnimator ofFloat = ObjectAnimator.ofFloat(findDependentFab(), "translationX", getFabTranslationX(i));
 | |
|         ofFloat.setDuration(getFabAlignmentAnimationDuration());
 | |
|         list.add(ofFloat);
 | |
|     }
 | |
| 
 | |
|     private int getFabAlignmentAnimationDuration() {
 | |
|         return MotionUtils.resolveThemeDuration(getContext(), FAB_ALIGNMENT_ANIM_DURATION_ATTR, 300);
 | |
|     }
 | |
| 
 | |
|     private Drawable maybeTintNavigationIcon(Drawable drawable) {
 | |
|         if (drawable == null || this.navigationIconTint == null) {
 | |
|             return drawable;
 | |
|         }
 | |
|         Drawable wrap = DrawableCompat.wrap(drawable.mutate());
 | |
|         DrawableCompat.setTint(wrap, this.navigationIconTint.intValue());
 | |
|         return wrap;
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void maybeAnimateMenuView(int i, boolean z) {
 | |
|         if (!ViewCompat.isLaidOut(this)) {
 | |
|             this.menuAnimatingWithFabAlignmentMode = false;
 | |
|             replaceMenu(this.pendingMenuResId);
 | |
|             return;
 | |
|         }
 | |
|         Animator animator = this.menuAnimator;
 | |
|         if (animator != null) {
 | |
|             animator.cancel();
 | |
|         }
 | |
|         ArrayList arrayList = new ArrayList();
 | |
|         if (!isFabVisibleOrWillBeShown()) {
 | |
|             i = 0;
 | |
|             z = false;
 | |
|         }
 | |
|         createMenuViewTranslationAnimation(i, z, arrayList);
 | |
|         AnimatorSet animatorSet = new AnimatorSet();
 | |
|         animatorSet.playTogether(arrayList);
 | |
|         this.menuAnimator = animatorSet;
 | |
|         animatorSet.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.bottomappbar.BottomAppBar.6
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationStart(Animator animator2) {
 | |
|                 BottomAppBar.this.dispatchAnimationStart();
 | |
|             }
 | |
| 
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationEnd(Animator animator2) {
 | |
|                 BottomAppBar.this.dispatchAnimationEnd();
 | |
|                 BottomAppBar.this.menuAnimatingWithFabAlignmentMode = false;
 | |
|                 BottomAppBar.this.menuAnimator = null;
 | |
|             }
 | |
|         });
 | |
|         this.menuAnimator.start();
 | |
|     }
 | |
| 
 | |
|     private void createMenuViewTranslationAnimation(final int i, final boolean z, List<Animator> list) {
 | |
|         final ActionMenuView actionMenuView = getActionMenuView();
 | |
|         if (actionMenuView == null) {
 | |
|             return;
 | |
|         }
 | |
|         float fabAlignmentAnimationDuration = getFabAlignmentAnimationDuration();
 | |
|         Animator ofFloat = ObjectAnimator.ofFloat(actionMenuView, "alpha", 1.0f);
 | |
|         ofFloat.setDuration((long) (0.8f * fabAlignmentAnimationDuration));
 | |
|         if (Math.abs(actionMenuView.getTranslationX() - getActionMenuViewTranslationX(actionMenuView, i, z)) <= 1.0f) {
 | |
|             if (actionMenuView.getAlpha() < 1.0f) {
 | |
|                 list.add(ofFloat);
 | |
|             }
 | |
|         } else {
 | |
|             ObjectAnimator ofFloat2 = ObjectAnimator.ofFloat(actionMenuView, "alpha", 0.0f);
 | |
|             ofFloat2.setDuration((long) (fabAlignmentAnimationDuration * 0.2f));
 | |
|             ofFloat2.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.bottomappbar.BottomAppBar.7
 | |
|                 public boolean cancelled;
 | |
| 
 | |
|                 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|                 public void onAnimationCancel(Animator animator) {
 | |
|                     this.cancelled = true;
 | |
|                 }
 | |
| 
 | |
|                 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|                 public void onAnimationEnd(Animator animator) {
 | |
|                     if (this.cancelled) {
 | |
|                         return;
 | |
|                     }
 | |
|                     boolean z2 = BottomAppBar.this.pendingMenuResId != 0;
 | |
|                     BottomAppBar bottomAppBar = BottomAppBar.this;
 | |
|                     bottomAppBar.replaceMenu(bottomAppBar.pendingMenuResId);
 | |
|                     BottomAppBar.this.translateActionMenuView(actionMenuView, i, z, z2);
 | |
|                 }
 | |
|             });
 | |
|             AnimatorSet animatorSet = new AnimatorSet();
 | |
|             animatorSet.playSequentially(ofFloat2, ofFloat);
 | |
|             list.add(animatorSet);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private float getFabTranslationY() {
 | |
|         if (this.fabAnchorMode == 1) {
 | |
|             return -getTopEdgeTreatment().getCradleVerticalOffset();
 | |
|         }
 | |
|         return findDependentView() != null ? (-((getMeasuredHeight() + getBottomInset()) - r0.getMeasuredHeight())) / 2 : 0;
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public float getFabTranslationX(int i) {
 | |
|         boolean isLayoutRtl = ViewUtils.isLayoutRtl(this);
 | |
|         if (i != 1) {
 | |
|             return 0.0f;
 | |
|         }
 | |
|         return ((getMeasuredWidth() / 2) - ((isLayoutRtl ? this.leftInset : this.rightInset) + ((this.fabAlignmentModeEndMargin == -1 || findDependentView() == null) ? this.fabOffsetEndMode : (r6.getMeasuredWidth() / 2) + this.fabAlignmentModeEndMargin))) * (isLayoutRtl ? -1 : 1);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public float getFabTranslationX() {
 | |
|         return getFabTranslationX(this.fabAlignmentMode);
 | |
|     }
 | |
| 
 | |
|     private ActionMenuView getActionMenuView() {
 | |
|         for (int i = 0; i < getChildCount(); i++) {
 | |
|             View childAt = getChildAt(i);
 | |
|             if (childAt instanceof ActionMenuView) {
 | |
|                 return (ActionMenuView) childAt;
 | |
|             }
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     private void translateActionMenuView(ActionMenuView actionMenuView, int i, boolean z) {
 | |
|         translateActionMenuView(actionMenuView, i, z, false);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void translateActionMenuView(final ActionMenuView actionMenuView, final int i, final boolean z, boolean z2) {
 | |
|         Runnable runnable = new Runnable() { // from class: com.google.android.material.bottomappbar.BottomAppBar.8
 | |
|             @Override // java.lang.Runnable
 | |
|             public void run() {
 | |
|                 actionMenuView.setTranslationX(BottomAppBar.this.getActionMenuViewTranslationX(r0, i, z));
 | |
|             }
 | |
|         };
 | |
|         if (z2) {
 | |
|             actionMenuView.post(runnable);
 | |
|         } else {
 | |
|             runnable.run();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     protected int getActionMenuViewTranslationX(ActionMenuView actionMenuView, int i, boolean z) {
 | |
|         int i2 = 0;
 | |
|         if (this.menuAlignmentMode != 1 && (i != 1 || !z)) {
 | |
|             return 0;
 | |
|         }
 | |
|         boolean isLayoutRtl = ViewUtils.isLayoutRtl(this);
 | |
|         int measuredWidth = isLayoutRtl ? getMeasuredWidth() : 0;
 | |
|         for (int i3 = 0; i3 < getChildCount(); i3++) {
 | |
|             View childAt = getChildAt(i3);
 | |
|             if ((childAt.getLayoutParams() instanceof Toolbar.LayoutParams) && (((Toolbar.LayoutParams) childAt.getLayoutParams()).gravity & GravityCompat.RELATIVE_HORIZONTAL_GRAVITY_MASK) == 8388611) {
 | |
|                 if (isLayoutRtl) {
 | |
|                     measuredWidth = Math.min(measuredWidth, childAt.getLeft());
 | |
|                 } else {
 | |
|                     measuredWidth = Math.max(measuredWidth, childAt.getRight());
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         int right = isLayoutRtl ? actionMenuView.getRight() : actionMenuView.getLeft();
 | |
|         int i4 = isLayoutRtl ? this.rightInset : -this.leftInset;
 | |
|         if (getNavigationIcon() == null) {
 | |
|             i2 = getResources().getDimensionPixelOffset(R.dimen.m3_bottomappbar_horizontal_padding);
 | |
|             if (!isLayoutRtl) {
 | |
|                 i2 = -i2;
 | |
|             }
 | |
|         }
 | |
|         return measuredWidth - ((right + i4) + i2);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void cancelAnimations() {
 | |
|         Animator animator = this.menuAnimator;
 | |
|         if (animator != null) {
 | |
|             animator.cancel();
 | |
|         }
 | |
|         Animator animator2 = this.modeAnimator;
 | |
|         if (animator2 != null) {
 | |
|             animator2.cancel();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.Toolbar, android.view.ViewGroup, android.view.View
 | |
|     protected void onLayout(boolean z, int i, int i2, int i3, int i4) {
 | |
|         super.onLayout(z, i, i2, i3, i4);
 | |
|         if (z) {
 | |
|             cancelAnimations();
 | |
|             setCutoutStateAndTranslateFab();
 | |
|             final View findDependentView = findDependentView();
 | |
|             if (findDependentView != null && ViewCompat.isLaidOut(findDependentView)) {
 | |
|                 findDependentView.post(new Runnable() { // from class: com.google.android.material.bottomappbar.BottomAppBar$$ExternalSyntheticLambda2
 | |
|                     @Override // java.lang.Runnable
 | |
|                     public final void run() {
 | |
|                         findDependentView.requestLayout();
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
|         }
 | |
|         setActionMenuViewPosition();
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public BottomAppBarTopEdgeTreatment getTopEdgeTreatment() {
 | |
|         return (BottomAppBarTopEdgeTreatment) this.materialShapeDrawable.getShapeAppearanceModel().getTopEdge();
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void setCutoutStateAndTranslateFab() {
 | |
|         getTopEdgeTreatment().setHorizontalOffset(getFabTranslationX());
 | |
|         this.materialShapeDrawable.setInterpolation((this.fabAttached && isFabVisibleOrWillBeShown() && this.fabAnchorMode == 1) ? 1.0f : 0.0f);
 | |
|         View findDependentView = findDependentView();
 | |
|         if (findDependentView != null) {
 | |
|             findDependentView.setTranslationY(getFabTranslationY());
 | |
|             findDependentView.setTranslationX(getFabTranslationX());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void setActionMenuViewPosition() {
 | |
|         ActionMenuView actionMenuView = getActionMenuView();
 | |
|         if (actionMenuView == null || this.menuAnimator != null) {
 | |
|             return;
 | |
|         }
 | |
|         actionMenuView.setAlpha(1.0f);
 | |
|         if (!isFabVisibleOrWillBeShown()) {
 | |
|             translateActionMenuView(actionMenuView, 0, false);
 | |
|         } else {
 | |
|             translateActionMenuView(actionMenuView, this.fabAlignmentMode, this.fabAttached);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void addFabAnimationListeners(FloatingActionButton floatingActionButton) {
 | |
|         floatingActionButton.addOnHideAnimationListener(this.fabAnimationListener);
 | |
|         floatingActionButton.addOnShowAnimationListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.bottomappbar.BottomAppBar.9
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationStart(Animator animator) {
 | |
|                 BottomAppBar.this.fabAnimationListener.onAnimationStart(animator);
 | |
|                 FloatingActionButton findDependentFab = BottomAppBar.this.findDependentFab();
 | |
|                 if (findDependentFab != null) {
 | |
|                     findDependentFab.setTranslationX(BottomAppBar.this.getFabTranslationX());
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|         floatingActionButton.addTransformationCallback(this.fabTransformationCallback);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.coordinatorlayout.widget.CoordinatorLayout.AttachedBehavior
 | |
|     public Behavior getBehavior() {
 | |
|         if (this.behavior == null) {
 | |
|             this.behavior = new Behavior();
 | |
|         }
 | |
|         return this.behavior;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.Toolbar, android.view.ViewGroup, android.view.View
 | |
|     protected void onAttachedToWindow() {
 | |
|         super.onAttachedToWindow();
 | |
|         MaterialShapeUtils.setParentAbsoluteElevation(this, this.materialShapeDrawable);
 | |
|         if (getParent() instanceof ViewGroup) {
 | |
|             ((ViewGroup) getParent()).setClipChildren(false);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static class Behavior extends HideBottomViewOnScrollBehavior<BottomAppBar> {
 | |
|         private final Rect fabContentRect;
 | |
|         private final View.OnLayoutChangeListener fabLayoutListener;
 | |
|         private int originalBottomMargin;
 | |
|         private WeakReference<BottomAppBar> viewRef;
 | |
| 
 | |
|         public Behavior() {
 | |
|             this.fabLayoutListener = new View.OnLayoutChangeListener() { // from class: com.google.android.material.bottomappbar.BottomAppBar.Behavior.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) {
 | |
|                     boolean z;
 | |
|                     BottomAppBar bottomAppBar = (BottomAppBar) Behavior.this.viewRef.get();
 | |
|                     if (bottomAppBar == null || (!((z = view instanceof FloatingActionButton)) && !(view instanceof ExtendedFloatingActionButton))) {
 | |
|                         view.removeOnLayoutChangeListener(this);
 | |
|                         return;
 | |
|                     }
 | |
|                     int height = view.getHeight();
 | |
|                     if (z) {
 | |
|                         FloatingActionButton floatingActionButton = (FloatingActionButton) view;
 | |
|                         floatingActionButton.getMeasuredContentRect(Behavior.this.fabContentRect);
 | |
|                         height = Behavior.this.fabContentRect.height();
 | |
|                         bottomAppBar.setFabDiameter(height);
 | |
|                         bottomAppBar.setFabCornerSize(floatingActionButton.getShapeAppearanceModel().getTopLeftCornerSize().getCornerSize(new RectF(Behavior.this.fabContentRect)));
 | |
|                     }
 | |
|                     CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) view.getLayoutParams();
 | |
|                     if (Behavior.this.originalBottomMargin == 0) {
 | |
|                         if (bottomAppBar.fabAnchorMode == 1) {
 | |
|                             layoutParams.bottomMargin = bottomAppBar.getBottomInset() + (bottomAppBar.getResources().getDimensionPixelOffset(R.dimen.mtrl_bottomappbar_fab_bottom_margin) - ((view.getMeasuredHeight() - height) / 2));
 | |
|                         }
 | |
|                         layoutParams.leftMargin = bottomAppBar.getLeftInset();
 | |
|                         layoutParams.rightMargin = bottomAppBar.getRightInset();
 | |
|                         if (ViewUtils.isLayoutRtl(view)) {
 | |
|                             layoutParams.leftMargin += bottomAppBar.fabOffsetEndMode;
 | |
|                         } else {
 | |
|                             layoutParams.rightMargin += bottomAppBar.fabOffsetEndMode;
 | |
|                         }
 | |
|                     }
 | |
|                     bottomAppBar.setCutoutStateAndTranslateFab();
 | |
|                 }
 | |
|             };
 | |
|             this.fabContentRect = new Rect();
 | |
|         }
 | |
| 
 | |
|         public Behavior(Context context, AttributeSet attributeSet) {
 | |
|             super(context, attributeSet);
 | |
|             this.fabLayoutListener = new View.OnLayoutChangeListener() { // from class: com.google.android.material.bottomappbar.BottomAppBar.Behavior.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) {
 | |
|                     boolean z;
 | |
|                     BottomAppBar bottomAppBar = (BottomAppBar) Behavior.this.viewRef.get();
 | |
|                     if (bottomAppBar == null || (!((z = view instanceof FloatingActionButton)) && !(view instanceof ExtendedFloatingActionButton))) {
 | |
|                         view.removeOnLayoutChangeListener(this);
 | |
|                         return;
 | |
|                     }
 | |
|                     int height = view.getHeight();
 | |
|                     if (z) {
 | |
|                         FloatingActionButton floatingActionButton = (FloatingActionButton) view;
 | |
|                         floatingActionButton.getMeasuredContentRect(Behavior.this.fabContentRect);
 | |
|                         height = Behavior.this.fabContentRect.height();
 | |
|                         bottomAppBar.setFabDiameter(height);
 | |
|                         bottomAppBar.setFabCornerSize(floatingActionButton.getShapeAppearanceModel().getTopLeftCornerSize().getCornerSize(new RectF(Behavior.this.fabContentRect)));
 | |
|                     }
 | |
|                     CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) view.getLayoutParams();
 | |
|                     if (Behavior.this.originalBottomMargin == 0) {
 | |
|                         if (bottomAppBar.fabAnchorMode == 1) {
 | |
|                             layoutParams.bottomMargin = bottomAppBar.getBottomInset() + (bottomAppBar.getResources().getDimensionPixelOffset(R.dimen.mtrl_bottomappbar_fab_bottom_margin) - ((view.getMeasuredHeight() - height) / 2));
 | |
|                         }
 | |
|                         layoutParams.leftMargin = bottomAppBar.getLeftInset();
 | |
|                         layoutParams.rightMargin = bottomAppBar.getRightInset();
 | |
|                         if (ViewUtils.isLayoutRtl(view)) {
 | |
|                             layoutParams.leftMargin += bottomAppBar.fabOffsetEndMode;
 | |
|                         } else {
 | |
|                             layoutParams.rightMargin += bottomAppBar.fabOffsetEndMode;
 | |
|                         }
 | |
|                     }
 | |
|                     bottomAppBar.setCutoutStateAndTranslateFab();
 | |
|                 }
 | |
|             };
 | |
|             this.fabContentRect = new Rect();
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.behavior.HideBottomViewOnScrollBehavior, androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
 | |
|         public boolean onLayoutChild(CoordinatorLayout coordinatorLayout, BottomAppBar bottomAppBar, int i) {
 | |
|             this.viewRef = new WeakReference<>(bottomAppBar);
 | |
|             View findDependentView = bottomAppBar.findDependentView();
 | |
|             if (findDependentView != null && !ViewCompat.isLaidOut(findDependentView)) {
 | |
|                 BottomAppBar.updateFabAnchorGravity(bottomAppBar, findDependentView);
 | |
|                 this.originalBottomMargin = ((CoordinatorLayout.LayoutParams) findDependentView.getLayoutParams()).bottomMargin;
 | |
|                 if (findDependentView instanceof FloatingActionButton) {
 | |
|                     FloatingActionButton floatingActionButton = (FloatingActionButton) findDependentView;
 | |
|                     if (bottomAppBar.fabAnchorMode == 0 && bottomAppBar.removeEmbeddedFabElevation) {
 | |
|                         ViewCompat.setElevation(floatingActionButton, 0.0f);
 | |
|                         floatingActionButton.setCompatElevation(0.0f);
 | |
|                     }
 | |
|                     if (floatingActionButton.getShowMotionSpec() == null) {
 | |
|                         floatingActionButton.setShowMotionSpecResource(R.animator.mtrl_fab_show_motion_spec);
 | |
|                     }
 | |
|                     if (floatingActionButton.getHideMotionSpec() == null) {
 | |
|                         floatingActionButton.setHideMotionSpecResource(R.animator.mtrl_fab_hide_motion_spec);
 | |
|                     }
 | |
|                     bottomAppBar.addFabAnimationListeners(floatingActionButton);
 | |
|                 }
 | |
|                 findDependentView.addOnLayoutChangeListener(this.fabLayoutListener);
 | |
|                 bottomAppBar.setCutoutStateAndTranslateFab();
 | |
|             }
 | |
|             coordinatorLayout.onLayoutChild(bottomAppBar, i);
 | |
|             return super.onLayoutChild(coordinatorLayout, (CoordinatorLayout) bottomAppBar, i);
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.behavior.HideBottomViewOnScrollBehavior, androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
 | |
|         public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, BottomAppBar bottomAppBar, View view, View view2, int i, int i2) {
 | |
|             return bottomAppBar.getHideOnScroll() && super.onStartNestedScroll(coordinatorLayout, (CoordinatorLayout) bottomAppBar, view, view2, i, i2);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.Toolbar, android.view.View
 | |
|     protected Parcelable onSaveInstanceState() {
 | |
|         SavedState savedState = new SavedState(super.onSaveInstanceState());
 | |
|         savedState.fabAlignmentMode = this.fabAlignmentMode;
 | |
|         savedState.fabAttached = this.fabAttached;
 | |
|         return savedState;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.Toolbar, 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.fabAlignmentMode = savedState.fabAlignmentMode;
 | |
|         this.fabAttached = savedState.fabAttached;
 | |
|     }
 | |
| 
 | |
|     static class SavedState extends AbsSavedState {
 | |
|         public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.ClassLoaderCreator<SavedState>() { // from class: com.google.android.material.bottomappbar.BottomAppBar.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];
 | |
|             }
 | |
|         };
 | |
|         int fabAlignmentMode;
 | |
|         boolean fabAttached;
 | |
| 
 | |
|         public SavedState(Parcelable parcelable) {
 | |
|             super(parcelable);
 | |
|         }
 | |
| 
 | |
|         public SavedState(Parcel parcel, ClassLoader classLoader) {
 | |
|             super(parcel, classLoader);
 | |
|             this.fabAlignmentMode = parcel.readInt();
 | |
|             this.fabAttached = parcel.readInt() != 0;
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.customview.view.AbsSavedState, android.os.Parcelable
 | |
|         public void writeToParcel(Parcel parcel, int i) {
 | |
|             super.writeToParcel(parcel, i);
 | |
|             parcel.writeInt(this.fabAlignmentMode);
 | |
|             parcel.writeInt(this.fabAttached ? 1 : 0);
 | |
|         }
 | |
|     }
 | |
| }
 |