package com.google.android.material.snackbar; import android.accessibilityservice.AccessibilityServiceInfo; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.ViewTreeObserver; import android.view.WindowInsets; import android.view.accessibility.AccessibilityManager; import android.widget.FrameLayout; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.OnApplyWindowInsetsListener; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import com.google.android.material.R; import com.google.android.material.animation.AnimationUtils; import com.google.android.material.behavior.SwipeDismissBehavior; import com.google.android.material.color.MaterialColors; import com.google.android.material.internal.ThemeEnforcement; import com.google.android.material.internal.ViewUtils; import com.google.android.material.internal.WindowUtils; import com.google.android.material.motion.MotionUtils; import com.google.android.material.resources.MaterialResources; import com.google.android.material.shape.MaterialShapeDrawable; import com.google.android.material.shape.ShapeAppearanceModel; import com.google.android.material.snackbar.BaseTransientBottomBar; import com.google.android.material.snackbar.SnackbarManager; import com.google.android.material.theme.overlay.MaterialThemeOverlay; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; /* loaded from: classes2.dex */ public abstract class BaseTransientBottomBar> { public static final int ANIMATION_MODE_FADE = 1; public static final int ANIMATION_MODE_SLIDE = 0; private static final float ANIMATION_SCALE_FROM_VALUE = 0.8f; static final int DEFAULT_ANIMATION_FADE_DURATION = 180; private static final int DEFAULT_ANIMATION_FADE_IN_DURATION = 150; private static final int DEFAULT_ANIMATION_FADE_OUT_DURATION = 75; static final int DEFAULT_SLIDE_ANIMATION_DURATION = 250; public static final int LENGTH_INDEFINITE = -2; public static final int LENGTH_LONG = 0; public static final int LENGTH_SHORT = -1; static final int MSG_DISMISS = 1; static final int MSG_SHOW = 0; private final AccessibilityManager accessibilityManager; private Anchor anchor; private boolean anchorViewLayoutListenerEnabled; private final int animationFadeInDuration; private final TimeInterpolator animationFadeInterpolator; private final int animationFadeOutDuration; private final TimeInterpolator animationScaleInterpolator; private final int animationSlideDuration; private final TimeInterpolator animationSlideInterpolator; private int appliedBottomMarginGestureInset; private Behavior behavior; private final Runnable bottomMarginGestureInsetRunnable; private List> callbacks; private final com.google.android.material.snackbar.ContentViewCallback contentViewCallback; private final Context context; private int duration; private int extraBottomMarginAnchorView; private int extraBottomMarginGestureInset; private int extraBottomMarginWindowInset; private int extraLeftMarginWindowInset; private int extraRightMarginWindowInset; private boolean gestureInsetBottomIgnored; SnackbarManager.Callback managerCallback; private boolean pendingShowingView; private final ViewGroup targetParent; protected final SnackbarBaseLayout view; private static final TimeInterpolator DEFAULT_ANIMATION_SLIDE_INTERPOLATOR = AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR; private static final TimeInterpolator DEFAULT_ANIMATION_FADE_INTERPOLATOR = AnimationUtils.LINEAR_INTERPOLATOR; private static final TimeInterpolator DEFAULT_ANIMATION_SCALE_INTERPOLATOR = AnimationUtils.LINEAR_OUT_SLOW_IN_INTERPOLATOR; private static final boolean USE_OFFSET_API = false; private static final int[] SNACKBAR_STYLE_ATTR = {R.attr.snackbarStyle}; private static final String TAG = "BaseTransientBottomBar"; static final Handler handler = new Handler(Looper.getMainLooper(), new Handler.Callback() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.1 @Override // android.os.Handler.Callback public boolean handleMessage(Message message) { int i = message.what; if (i == 0) { ((BaseTransientBottomBar) message.obj).showView(); return true; } if (i != 1) { return false; } ((BaseTransientBottomBar) message.obj).hideView(message.arg1); return true; } }); @Retention(RetentionPolicy.SOURCE) /* loaded from: classes2.dex */ public @interface AnimationMode { } /* loaded from: classes2.dex */ public static abstract class BaseCallback { public static final int DISMISS_EVENT_ACTION = 1; public static final int DISMISS_EVENT_CONSECUTIVE = 4; public static final int DISMISS_EVENT_MANUAL = 3; public static final int DISMISS_EVENT_SWIPE = 0; public static final int DISMISS_EVENT_TIMEOUT = 2; @Retention(RetentionPolicy.SOURCE) /* loaded from: classes2.dex */ public @interface DismissEvent { } public void onDismissed(B b, int i) { } public void onShown(B b) { } } @Deprecated /* loaded from: classes2.dex */ public interface ContentViewCallback extends com.google.android.material.snackbar.ContentViewCallback { } @Retention(RetentionPolicy.SOURCE) /* loaded from: classes2.dex */ public @interface Duration { } public Behavior getBehavior() { return this.behavior; } public Context getContext() { return this.context; } public int getDuration() { return this.duration; } public View getView() { return this.view; } public boolean isAnchorViewLayoutListenerEnabled() { return this.anchorViewLayoutListenerEnabled; } public boolean isGestureInsetBottomIgnored() { return this.gestureInsetBottomIgnored; } public void setAnchorViewLayoutListenerEnabled(boolean z) { this.anchorViewLayoutListenerEnabled = z; } public B setBehavior(Behavior behavior) { this.behavior = behavior; return this; } public B setDuration(int i) { this.duration = i; return this; } public B setGestureInsetBottomIgnored(boolean z) { this.gestureInsetBottomIgnored = z; return this; } protected BaseTransientBottomBar(ViewGroup viewGroup, View view, com.google.android.material.snackbar.ContentViewCallback contentViewCallback) { this(viewGroup.getContext(), viewGroup, view, contentViewCallback); } /* JADX INFO: Access modifiers changed from: protected */ public BaseTransientBottomBar(Context context, ViewGroup viewGroup, View view, com.google.android.material.snackbar.ContentViewCallback contentViewCallback) { this.anchorViewLayoutListenerEnabled = false; this.bottomMarginGestureInsetRunnable = new Runnable() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.2 @Override // java.lang.Runnable public void run() { if (BaseTransientBottomBar.this.view == null || BaseTransientBottomBar.this.context == null) { return; } int height = (WindowUtils.getCurrentWindowBounds(BaseTransientBottomBar.this.context).height() - BaseTransientBottomBar.this.getViewAbsoluteBottom()) + ((int) BaseTransientBottomBar.this.view.getTranslationY()); if (height >= BaseTransientBottomBar.this.extraBottomMarginGestureInset) { BaseTransientBottomBar baseTransientBottomBar = BaseTransientBottomBar.this; baseTransientBottomBar.appliedBottomMarginGestureInset = baseTransientBottomBar.extraBottomMarginGestureInset; return; } ViewGroup.LayoutParams layoutParams = BaseTransientBottomBar.this.view.getLayoutParams(); if (layoutParams instanceof ViewGroup.MarginLayoutParams) { BaseTransientBottomBar baseTransientBottomBar2 = BaseTransientBottomBar.this; baseTransientBottomBar2.appliedBottomMarginGestureInset = baseTransientBottomBar2.extraBottomMarginGestureInset; ((ViewGroup.MarginLayoutParams) layoutParams).bottomMargin += BaseTransientBottomBar.this.extraBottomMarginGestureInset - height; BaseTransientBottomBar.this.view.requestLayout(); return; } Log.w(BaseTransientBottomBar.TAG, "Unable to apply gesture inset because layout params are not MarginLayoutParams"); } }; this.managerCallback = new SnackbarManager.Callback() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.5 @Override // com.google.android.material.snackbar.SnackbarManager.Callback public void show() { BaseTransientBottomBar.handler.sendMessage(BaseTransientBottomBar.handler.obtainMessage(0, BaseTransientBottomBar.this)); } @Override // com.google.android.material.snackbar.SnackbarManager.Callback public void dismiss(int i) { BaseTransientBottomBar.handler.sendMessage(BaseTransientBottomBar.handler.obtainMessage(1, i, 0, BaseTransientBottomBar.this)); } }; if (viewGroup == null) { throw new IllegalArgumentException("Transient bottom bar must have non-null parent"); } if (view == null) { throw new IllegalArgumentException("Transient bottom bar must have non-null content"); } if (contentViewCallback == null) { throw new IllegalArgumentException("Transient bottom bar must have non-null callback"); } this.targetParent = viewGroup; this.contentViewCallback = contentViewCallback; this.context = context; ThemeEnforcement.checkAppCompatTheme(context); SnackbarBaseLayout snackbarBaseLayout = (SnackbarBaseLayout) LayoutInflater.from(context).inflate(getSnackbarBaseLayoutResId(), viewGroup, false); this.view = snackbarBaseLayout; snackbarBaseLayout.setBaseTransientBottomBar(this); if (view instanceof SnackbarContentLayout) { SnackbarContentLayout snackbarContentLayout = (SnackbarContentLayout) view; snackbarContentLayout.updateActionTextColorAlphaIfNeeded(snackbarBaseLayout.getActionTextColorAlpha()); snackbarContentLayout.setMaxInlineActionWidth(snackbarBaseLayout.getMaxInlineActionWidth()); } snackbarBaseLayout.addView(view); ViewCompat.setAccessibilityLiveRegion(snackbarBaseLayout, 1); ViewCompat.setImportantForAccessibility(snackbarBaseLayout, 1); ViewCompat.setFitsSystemWindows(snackbarBaseLayout, true); ViewCompat.setOnApplyWindowInsetsListener(snackbarBaseLayout, new OnApplyWindowInsetsListener() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.3 @Override // androidx.core.view.OnApplyWindowInsetsListener public WindowInsetsCompat onApplyWindowInsets(View view2, WindowInsetsCompat windowInsetsCompat) { BaseTransientBottomBar.this.extraBottomMarginWindowInset = windowInsetsCompat.getSystemWindowInsetBottom(); BaseTransientBottomBar.this.extraLeftMarginWindowInset = windowInsetsCompat.getSystemWindowInsetLeft(); BaseTransientBottomBar.this.extraRightMarginWindowInset = windowInsetsCompat.getSystemWindowInsetRight(); BaseTransientBottomBar.this.updateMargins(); return windowInsetsCompat; } }); ViewCompat.setAccessibilityDelegate(snackbarBaseLayout, new AccessibilityDelegateCompat() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.4 @Override // androidx.core.view.AccessibilityDelegateCompat public void onInitializeAccessibilityNodeInfo(View view2, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) { super.onInitializeAccessibilityNodeInfo(view2, accessibilityNodeInfoCompat); accessibilityNodeInfoCompat.addAction(1048576); accessibilityNodeInfoCompat.setDismissable(true); } @Override // androidx.core.view.AccessibilityDelegateCompat public boolean performAccessibilityAction(View view2, int i, Bundle bundle) { if (i == 1048576) { BaseTransientBottomBar.this.dismiss(); return true; } return super.performAccessibilityAction(view2, i, bundle); } }); this.accessibilityManager = (AccessibilityManager) context.getSystemService("accessibility"); this.animationSlideDuration = MotionUtils.resolveThemeDuration(context, R.attr.motionDurationLong2, 250); this.animationFadeInDuration = MotionUtils.resolveThemeDuration(context, R.attr.motionDurationLong2, 150); this.animationFadeOutDuration = MotionUtils.resolveThemeDuration(context, R.attr.motionDurationMedium1, 75); this.animationFadeInterpolator = MotionUtils.resolveThemeInterpolator(context, R.attr.motionEasingEmphasizedInterpolator, DEFAULT_ANIMATION_FADE_INTERPOLATOR); this.animationScaleInterpolator = MotionUtils.resolveThemeInterpolator(context, R.attr.motionEasingEmphasizedInterpolator, DEFAULT_ANIMATION_SCALE_INTERPOLATOR); this.animationSlideInterpolator = MotionUtils.resolveThemeInterpolator(context, R.attr.motionEasingEmphasizedInterpolator, DEFAULT_ANIMATION_SLIDE_INTERPOLATOR); } /* JADX INFO: Access modifiers changed from: private */ public void updateMargins() { ViewGroup.LayoutParams layoutParams = this.view.getLayoutParams(); if (!(layoutParams instanceof ViewGroup.MarginLayoutParams)) { Log.w(TAG, "Unable to update margins because layout params are not MarginLayoutParams"); return; } if (this.view.originalMargins == null) { Log.w(TAG, "Unable to update margins because original view margins are not set"); return; } if (this.view.getParent() == null) { return; } ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) layoutParams; int i = this.view.originalMargins.bottom + (getAnchorView() != null ? this.extraBottomMarginAnchorView : this.extraBottomMarginWindowInset); int i2 = this.view.originalMargins.left + this.extraLeftMarginWindowInset; int i3 = this.view.originalMargins.right + this.extraRightMarginWindowInset; int i4 = this.view.originalMargins.top; boolean z = (marginLayoutParams.bottomMargin == i && marginLayoutParams.leftMargin == i2 && marginLayoutParams.rightMargin == i3 && marginLayoutParams.topMargin == i4) ? false : true; if (z) { marginLayoutParams.bottomMargin = i; marginLayoutParams.leftMargin = i2; marginLayoutParams.rightMargin = i3; marginLayoutParams.topMargin = i4; this.view.requestLayout(); } if ((z || this.appliedBottomMarginGestureInset != this.extraBottomMarginGestureInset) && shouldUpdateGestureInset()) { this.view.removeCallbacks(this.bottomMarginGestureInsetRunnable); this.view.post(this.bottomMarginGestureInsetRunnable); } } private boolean shouldUpdateGestureInset() { return this.extraBottomMarginGestureInset > 0 && !this.gestureInsetBottomIgnored && isSwipeDismissable(); } private boolean isSwipeDismissable() { ViewGroup.LayoutParams layoutParams = this.view.getLayoutParams(); return (layoutParams instanceof CoordinatorLayout.LayoutParams) && (((CoordinatorLayout.LayoutParams) layoutParams).getBehavior() instanceof SwipeDismissBehavior); } protected int getSnackbarBaseLayoutResId() { return hasSnackbarStyleAttr() ? R.layout.mtrl_layout_snackbar : R.layout.design_layout_snackbar; } protected boolean hasSnackbarStyleAttr() { TypedArray obtainStyledAttributes = this.context.obtainStyledAttributes(SNACKBAR_STYLE_ATTR); int resourceId = obtainStyledAttributes.getResourceId(0, -1); obtainStyledAttributes.recycle(); return resourceId != -1; } public int getAnimationMode() { return this.view.getAnimationMode(); } public B setAnimationMode(int i) { this.view.setAnimationMode(i); return this; } public View getAnchorView() { Anchor anchor = this.anchor; if (anchor == null) { return null; } return anchor.getAnchorView(); } public B setAnchorView(View view) { Anchor anchor = this.anchor; if (anchor != null) { anchor.unanchor(); } this.anchor = view == null ? null : Anchor.anchor(this, view); return this; } public B setAnchorView(int i) { View findViewById = this.targetParent.findViewById(i); if (findViewById == null) { throw new IllegalArgumentException("Unable to find anchor view with id: " + i); } return setAnchorView(findViewById); } public void show() { SnackbarManager.getInstance().show(getDuration(), this.managerCallback); } public void dismiss() { dispatchDismiss(3); } /* JADX INFO: Access modifiers changed from: protected */ public void dispatchDismiss(int i) { SnackbarManager.getInstance().dismiss(this.managerCallback, i); } public B addCallback(BaseCallback baseCallback) { if (baseCallback == null) { return this; } if (this.callbacks == null) { this.callbacks = new ArrayList(); } this.callbacks.add(baseCallback); return this; } public B removeCallback(BaseCallback baseCallback) { List> list; if (baseCallback == null || (list = this.callbacks) == null) { return this; } list.remove(baseCallback); return this; } public boolean isShown() { return SnackbarManager.getInstance().isCurrent(this.managerCallback); } public boolean isShownOrQueued() { return SnackbarManager.getInstance().isCurrentOrNext(this.managerCallback); } protected SwipeDismissBehavior getNewBehavior() { return new Behavior(); } final void showView() { if (this.view.getParent() == null) { ViewGroup.LayoutParams layoutParams = this.view.getLayoutParams(); if (layoutParams instanceof CoordinatorLayout.LayoutParams) { setUpBehavior((CoordinatorLayout.LayoutParams) layoutParams); } this.view.addToTargetParent(this.targetParent); recalculateAndUpdateMargins(); this.view.setVisibility(4); } if (ViewCompat.isLaidOut(this.view)) { showViewImpl(); } else { this.pendingShowingView = true; } } void onAttachedToWindow() { WindowInsets rootWindowInsets = this.view.getRootWindowInsets(); if (rootWindowInsets != null) { this.extraBottomMarginGestureInset = rootWindowInsets.getMandatorySystemGestureInsets().bottom; updateMargins(); } } void onDetachedFromWindow() { if (isShownOrQueued()) { handler.post(new Runnable() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.6 @Override // java.lang.Runnable public void run() { BaseTransientBottomBar.this.onViewHidden(3); } }); } } void onLayoutChange() { if (this.pendingShowingView) { showViewImpl(); this.pendingShowingView = false; } } private void showViewImpl() { if (shouldAnimate()) { animateViewIn(); return; } if (this.view.getParent() != null) { this.view.setVisibility(0); } onViewShown(); } /* JADX INFO: Access modifiers changed from: private */ public int getViewAbsoluteBottom() { int[] iArr = new int[2]; this.view.getLocationInWindow(iArr); return iArr[1] + this.view.getHeight(); } private void setUpBehavior(CoordinatorLayout.LayoutParams layoutParams) { SwipeDismissBehavior swipeDismissBehavior = this.behavior; if (swipeDismissBehavior == null) { swipeDismissBehavior = getNewBehavior(); } if (swipeDismissBehavior instanceof Behavior) { ((Behavior) swipeDismissBehavior).setBaseTransientBottomBar(this); } swipeDismissBehavior.setListener(new SwipeDismissBehavior.OnDismissListener() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.7 @Override // com.google.android.material.behavior.SwipeDismissBehavior.OnDismissListener public void onDismiss(View view) { if (view.getParent() != null) { view.setVisibility(8); } BaseTransientBottomBar.this.dispatchDismiss(0); } @Override // com.google.android.material.behavior.SwipeDismissBehavior.OnDismissListener public void onDragStateChanged(int i) { if (i == 0) { SnackbarManager.getInstance().restoreTimeoutIfPaused(BaseTransientBottomBar.this.managerCallback); } else if (i == 1 || i == 2) { SnackbarManager.getInstance().pauseTimeout(BaseTransientBottomBar.this.managerCallback); } } }); layoutParams.setBehavior(swipeDismissBehavior); if (getAnchorView() == null) { layoutParams.insetEdge = 80; } } /* JADX INFO: Access modifiers changed from: private */ public void recalculateAndUpdateMargins() { this.extraBottomMarginAnchorView = calculateBottomMarginForAnchorView(); updateMargins(); } private int calculateBottomMarginForAnchorView() { if (getAnchorView() == null) { return 0; } int[] iArr = new int[2]; getAnchorView().getLocationOnScreen(iArr); int i = iArr[1]; int[] iArr2 = new int[2]; this.targetParent.getLocationOnScreen(iArr2); return (iArr2[1] + this.targetParent.getHeight()) - i; } void animateViewIn() { this.view.post(new Runnable() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.8 @Override // java.lang.Runnable public void run() { if (BaseTransientBottomBar.this.view == null) { return; } if (BaseTransientBottomBar.this.view.getParent() != null) { BaseTransientBottomBar.this.view.setVisibility(0); } if (BaseTransientBottomBar.this.view.getAnimationMode() == 1) { BaseTransientBottomBar.this.startFadeInAnimation(); } else { BaseTransientBottomBar.this.startSlideInAnimation(); } } }); } private void animateViewOut(int i) { if (this.view.getAnimationMode() == 1) { startFadeOutAnimation(i); } else { startSlideOutAnimation(i); } } /* JADX INFO: Access modifiers changed from: private */ public void startFadeInAnimation() { ValueAnimator alphaAnimator = getAlphaAnimator(0.0f, 1.0f); ValueAnimator scaleAnimator = getScaleAnimator(ANIMATION_SCALE_FROM_VALUE, 1.0f); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(alphaAnimator, scaleAnimator); animatorSet.setDuration(this.animationFadeInDuration); animatorSet.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.9 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationEnd(Animator animator) { BaseTransientBottomBar.this.onViewShown(); } }); animatorSet.start(); } private void startFadeOutAnimation(final int i) { ValueAnimator alphaAnimator = getAlphaAnimator(1.0f, 0.0f); alphaAnimator.setDuration(this.animationFadeOutDuration); alphaAnimator.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.10 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationEnd(Animator animator) { BaseTransientBottomBar.this.onViewHidden(i); } }); alphaAnimator.start(); } private ValueAnimator getAlphaAnimator(float... fArr) { ValueAnimator ofFloat = ValueAnimator.ofFloat(fArr); ofFloat.setInterpolator(this.animationFadeInterpolator); ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.11 @Override // android.animation.ValueAnimator.AnimatorUpdateListener public void onAnimationUpdate(ValueAnimator valueAnimator) { BaseTransientBottomBar.this.view.setAlpha(((Float) valueAnimator.getAnimatedValue()).floatValue()); } }); return ofFloat; } private ValueAnimator getScaleAnimator(float... fArr) { ValueAnimator ofFloat = ValueAnimator.ofFloat(fArr); ofFloat.setInterpolator(this.animationScaleInterpolator); ofFloat.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.12 @Override // android.animation.ValueAnimator.AnimatorUpdateListener public void onAnimationUpdate(ValueAnimator valueAnimator) { float floatValue = ((Float) valueAnimator.getAnimatedValue()).floatValue(); BaseTransientBottomBar.this.view.setScaleX(floatValue); BaseTransientBottomBar.this.view.setScaleY(floatValue); } }); return ofFloat; } /* JADX INFO: Access modifiers changed from: private */ public void startSlideInAnimation() { int translationYBottom = getTranslationYBottom(); if (USE_OFFSET_API) { ViewCompat.offsetTopAndBottom(this.view, translationYBottom); } else { this.view.setTranslationY(translationYBottom); } ValueAnimator valueAnimator = new ValueAnimator(); valueAnimator.setIntValues(translationYBottom, 0); valueAnimator.setInterpolator(this.animationSlideInterpolator); valueAnimator.setDuration(this.animationSlideDuration); valueAnimator.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.13 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationStart(Animator animator) { BaseTransientBottomBar.this.contentViewCallback.animateContentIn(BaseTransientBottomBar.this.animationSlideDuration - BaseTransientBottomBar.this.animationFadeInDuration, BaseTransientBottomBar.this.animationFadeInDuration); } @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationEnd(Animator animator) { BaseTransientBottomBar.this.onViewShown(); } }); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(translationYBottom) { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.14 private int previousAnimatedIntValue; final /* synthetic */ int val$translationYBottom; { this.val$translationYBottom = translationYBottom; this.previousAnimatedIntValue = translationYBottom; } @Override // android.animation.ValueAnimator.AnimatorUpdateListener public void onAnimationUpdate(ValueAnimator valueAnimator2) { int intValue = ((Integer) valueAnimator2.getAnimatedValue()).intValue(); if (BaseTransientBottomBar.USE_OFFSET_API) { ViewCompat.offsetTopAndBottom(BaseTransientBottomBar.this.view, intValue - this.previousAnimatedIntValue); } else { BaseTransientBottomBar.this.view.setTranslationY(intValue); } this.previousAnimatedIntValue = intValue; } }); valueAnimator.start(); } private void startSlideOutAnimation(final int i) { ValueAnimator valueAnimator = new ValueAnimator(); valueAnimator.setIntValues(0, getTranslationYBottom()); valueAnimator.setInterpolator(this.animationSlideInterpolator); valueAnimator.setDuration(this.animationSlideDuration); valueAnimator.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.15 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationStart(Animator animator) { BaseTransientBottomBar.this.contentViewCallback.animateContentOut(0, BaseTransientBottomBar.this.animationFadeOutDuration); } @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationEnd(Animator animator) { BaseTransientBottomBar.this.onViewHidden(i); } }); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.16 private int previousAnimatedIntValue = 0; @Override // android.animation.ValueAnimator.AnimatorUpdateListener public void onAnimationUpdate(ValueAnimator valueAnimator2) { int intValue = ((Integer) valueAnimator2.getAnimatedValue()).intValue(); if (BaseTransientBottomBar.USE_OFFSET_API) { ViewCompat.offsetTopAndBottom(BaseTransientBottomBar.this.view, intValue - this.previousAnimatedIntValue); } else { BaseTransientBottomBar.this.view.setTranslationY(intValue); } this.previousAnimatedIntValue = intValue; } }); valueAnimator.start(); } private int getTranslationYBottom() { int height = this.view.getHeight(); ViewGroup.LayoutParams layoutParams = this.view.getLayoutParams(); return layoutParams instanceof ViewGroup.MarginLayoutParams ? height + ((ViewGroup.MarginLayoutParams) layoutParams).bottomMargin : height; } final void hideView(int i) { if (shouldAnimate() && this.view.getVisibility() == 0) { animateViewOut(i); } else { onViewHidden(i); } } void onViewShown() { SnackbarManager.getInstance().onShown(this.managerCallback); List> list = this.callbacks; if (list != null) { for (int size = list.size() - 1; size >= 0; size--) { this.callbacks.get(size).onShown(this); } } } void onViewHidden(int i) { SnackbarManager.getInstance().onDismissed(this.managerCallback); List> list = this.callbacks; if (list != null) { for (int size = list.size() - 1; size >= 0; size--) { this.callbacks.get(size).onDismissed(this, i); } } ViewParent parent = this.view.getParent(); if (parent instanceof ViewGroup) { ((ViewGroup) parent).removeView(this.view); } } boolean shouldAnimate() { AccessibilityManager accessibilityManager = this.accessibilityManager; if (accessibilityManager == null) { return true; } List enabledAccessibilityServiceList = accessibilityManager.getEnabledAccessibilityServiceList(1); return enabledAccessibilityServiceList != null && enabledAccessibilityServiceList.isEmpty(); } /* JADX INFO: Access modifiers changed from: protected */ /* loaded from: classes2.dex */ public static class SnackbarBaseLayout extends FrameLayout { private static final View.OnTouchListener consumeAllTouchListener = new View.OnTouchListener() { // from class: com.google.android.material.snackbar.BaseTransientBottomBar.SnackbarBaseLayout.1 @Override // android.view.View.OnTouchListener public boolean onTouch(View view, MotionEvent motionEvent) { return true; } }; private final float actionTextColorAlpha; private boolean addingToTargetParent; private int animationMode; private final float backgroundOverlayColorAlpha; private ColorStateList backgroundTint; private PorterDuff.Mode backgroundTintMode; private BaseTransientBottomBar baseTransientBottomBar; private final int maxInlineActionWidth; private final int maxWidth; private Rect originalMargins; ShapeAppearanceModel shapeAppearanceModel; /* JADX INFO: Access modifiers changed from: private */ public void setBaseTransientBottomBar(BaseTransientBottomBar baseTransientBottomBar) { this.baseTransientBottomBar = baseTransientBottomBar; } float getActionTextColorAlpha() { return this.actionTextColorAlpha; } int getAnimationMode() { return this.animationMode; } float getBackgroundOverlayColorAlpha() { return this.backgroundOverlayColorAlpha; } int getMaxInlineActionWidth() { return this.maxInlineActionWidth; } int getMaxWidth() { return this.maxWidth; } void setAnimationMode(int i) { this.animationMode = i; } /* JADX INFO: Access modifiers changed from: protected */ public SnackbarBaseLayout(Context context) { this(context, null); } /* JADX INFO: Access modifiers changed from: protected */ public SnackbarBaseLayout(Context context, AttributeSet attributeSet) { super(MaterialThemeOverlay.wrap(context, attributeSet, 0, 0), attributeSet); Context context2 = getContext(); TypedArray obtainStyledAttributes = context2.obtainStyledAttributes(attributeSet, R.styleable.SnackbarLayout); if (obtainStyledAttributes.hasValue(R.styleable.SnackbarLayout_elevation)) { ViewCompat.setElevation(this, obtainStyledAttributes.getDimensionPixelSize(R.styleable.SnackbarLayout_elevation, 0)); } this.animationMode = obtainStyledAttributes.getInt(R.styleable.SnackbarLayout_animationMode, 0); if (obtainStyledAttributes.hasValue(R.styleable.SnackbarLayout_shapeAppearance) || obtainStyledAttributes.hasValue(R.styleable.SnackbarLayout_shapeAppearanceOverlay)) { this.shapeAppearanceModel = ShapeAppearanceModel.builder(context2, attributeSet, 0, 0).build(); } this.backgroundOverlayColorAlpha = obtainStyledAttributes.getFloat(R.styleable.SnackbarLayout_backgroundOverlayColorAlpha, 1.0f); setBackgroundTintList(MaterialResources.getColorStateList(context2, obtainStyledAttributes, R.styleable.SnackbarLayout_backgroundTint)); setBackgroundTintMode(ViewUtils.parseTintMode(obtainStyledAttributes.getInt(R.styleable.SnackbarLayout_backgroundTintMode, -1), PorterDuff.Mode.SRC_IN)); this.actionTextColorAlpha = obtainStyledAttributes.getFloat(R.styleable.SnackbarLayout_actionTextColorAlpha, 1.0f); this.maxWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.SnackbarLayout_android_maxWidth, -1); this.maxInlineActionWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.SnackbarLayout_maxActionInlineWidth, -1); obtainStyledAttributes.recycle(); setOnTouchListener(consumeAllTouchListener); setFocusable(true); if (getBackground() == null) { ViewCompat.setBackground(this, createThemedBackground()); } } @Override // android.view.View public void setBackground(Drawable drawable) { setBackgroundDrawable(drawable); } @Override // android.view.View public void setBackgroundDrawable(Drawable drawable) { if (drawable != null && this.backgroundTint != null) { drawable = DrawableCompat.wrap(drawable.mutate()); DrawableCompat.setTintList(drawable, this.backgroundTint); DrawableCompat.setTintMode(drawable, this.backgroundTintMode); } super.setBackgroundDrawable(drawable); } @Override // android.view.View public void setBackgroundTintList(ColorStateList colorStateList) { this.backgroundTint = colorStateList; if (getBackground() != null) { Drawable wrap = DrawableCompat.wrap(getBackground().mutate()); DrawableCompat.setTintList(wrap, colorStateList); DrawableCompat.setTintMode(wrap, this.backgroundTintMode); if (wrap != getBackground()) { super.setBackgroundDrawable(wrap); } } } @Override // android.view.View public void setBackgroundTintMode(PorterDuff.Mode mode) { this.backgroundTintMode = mode; if (getBackground() != null) { Drawable wrap = DrawableCompat.wrap(getBackground().mutate()); DrawableCompat.setTintMode(wrap, mode); if (wrap != getBackground()) { super.setBackgroundDrawable(wrap); } } } @Override // android.view.View public void setOnClickListener(View.OnClickListener onClickListener) { setOnTouchListener(onClickListener != null ? null : consumeAllTouchListener); super.setOnClickListener(onClickListener); } /* JADX INFO: Access modifiers changed from: protected */ @Override // android.widget.FrameLayout, android.view.View public void onMeasure(int i, int i2) { super.onMeasure(i, i2); if (this.maxWidth > 0) { int measuredWidth = getMeasuredWidth(); int i3 = this.maxWidth; if (measuredWidth > i3) { super.onMeasure(View.MeasureSpec.makeMeasureSpec(i3, 1073741824), i2); } } } @Override // android.widget.FrameLayout, 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); BaseTransientBottomBar baseTransientBottomBar = this.baseTransientBottomBar; if (baseTransientBottomBar != null) { baseTransientBottomBar.onLayoutChange(); } } @Override // android.view.ViewGroup, android.view.View protected void onAttachedToWindow() { super.onAttachedToWindow(); BaseTransientBottomBar baseTransientBottomBar = this.baseTransientBottomBar; if (baseTransientBottomBar != null) { baseTransientBottomBar.onAttachedToWindow(); } ViewCompat.requestApplyInsets(this); } @Override // android.view.ViewGroup, android.view.View protected void onDetachedFromWindow() { super.onDetachedFromWindow(); BaseTransientBottomBar baseTransientBottomBar = this.baseTransientBottomBar; if (baseTransientBottomBar != null) { baseTransientBottomBar.onDetachedFromWindow(); } } @Override // android.view.View public void setLayoutParams(ViewGroup.LayoutParams layoutParams) { super.setLayoutParams(layoutParams); if (this.addingToTargetParent || !(layoutParams instanceof ViewGroup.MarginLayoutParams)) { return; } updateOriginalMargins((ViewGroup.MarginLayoutParams) layoutParams); BaseTransientBottomBar baseTransientBottomBar = this.baseTransientBottomBar; if (baseTransientBottomBar != null) { baseTransientBottomBar.updateMargins(); } } void addToTargetParent(ViewGroup viewGroup) { this.addingToTargetParent = true; viewGroup.addView(this); this.addingToTargetParent = false; } private void updateOriginalMargins(ViewGroup.MarginLayoutParams marginLayoutParams) { this.originalMargins = new Rect(marginLayoutParams.leftMargin, marginLayoutParams.topMargin, marginLayoutParams.rightMargin, marginLayoutParams.bottomMargin); } private Drawable createThemedBackground() { int layer = MaterialColors.layer(this, R.attr.colorSurface, R.attr.colorOnSurface, getBackgroundOverlayColorAlpha()); ShapeAppearanceModel shapeAppearanceModel = this.shapeAppearanceModel; Drawable createMaterialShapeDrawableBackground = shapeAppearanceModel != null ? BaseTransientBottomBar.createMaterialShapeDrawableBackground(layer, shapeAppearanceModel) : BaseTransientBottomBar.createGradientDrawableBackground(layer, getResources()); if (this.backgroundTint != null) { Drawable wrap = DrawableCompat.wrap(createMaterialShapeDrawableBackground); DrawableCompat.setTintList(wrap, this.backgroundTint); return wrap; } return DrawableCompat.wrap(createMaterialShapeDrawableBackground); } } /* JADX INFO: Access modifiers changed from: private */ public static MaterialShapeDrawable createMaterialShapeDrawableBackground(int i, ShapeAppearanceModel shapeAppearanceModel) { MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel); materialShapeDrawable.setFillColor(ColorStateList.valueOf(i)); return materialShapeDrawable; } /* JADX INFO: Access modifiers changed from: private */ public static GradientDrawable createGradientDrawableBackground(int i, Resources resources) { float dimension = resources.getDimension(R.dimen.mtrl_snackbar_background_corner_radius); GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setShape(0); gradientDrawable.setCornerRadius(dimension); gradientDrawable.setColor(i); return gradientDrawable; } /* loaded from: classes2.dex */ public static class Behavior extends SwipeDismissBehavior { private final BehaviorDelegate delegate = new BehaviorDelegate(this); /* JADX INFO: Access modifiers changed from: private */ public void setBaseTransientBottomBar(BaseTransientBottomBar baseTransientBottomBar) { this.delegate.setBaseTransientBottomBar(baseTransientBottomBar); } @Override // com.google.android.material.behavior.SwipeDismissBehavior public boolean canSwipeDismissView(View view) { return this.delegate.canSwipeDismissView(view); } @Override // com.google.android.material.behavior.SwipeDismissBehavior, androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior public boolean onInterceptTouchEvent(CoordinatorLayout coordinatorLayout, View view, MotionEvent motionEvent) { this.delegate.onInterceptTouchEvent(coordinatorLayout, view, motionEvent); return super.onInterceptTouchEvent(coordinatorLayout, view, motionEvent); } } /* loaded from: classes2.dex */ public static class BehaviorDelegate { private SnackbarManager.Callback managerCallback; public BehaviorDelegate(SwipeDismissBehavior swipeDismissBehavior) { swipeDismissBehavior.setStartAlphaSwipeDistance(0.1f); swipeDismissBehavior.setEndAlphaSwipeDistance(0.6f); swipeDismissBehavior.setSwipeDirection(0); } public void setBaseTransientBottomBar(BaseTransientBottomBar baseTransientBottomBar) { this.managerCallback = baseTransientBottomBar.managerCallback; } public boolean canSwipeDismissView(View view) { return view instanceof SnackbarBaseLayout; } public void onInterceptTouchEvent(CoordinatorLayout coordinatorLayout, View view, MotionEvent motionEvent) { int actionMasked = motionEvent.getActionMasked(); if (actionMasked == 0) { if (coordinatorLayout.isPointInChildBounds(view, (int) motionEvent.getX(), (int) motionEvent.getY())) { SnackbarManager.getInstance().pauseTimeout(this.managerCallback); } } else if (actionMasked == 1 || actionMasked == 3) { SnackbarManager.getInstance().restoreTimeoutIfPaused(this.managerCallback); } } } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public static class Anchor implements View.OnAttachStateChangeListener, ViewTreeObserver.OnGlobalLayoutListener { private final WeakReference anchorView; private final WeakReference transientBottomBar; static Anchor anchor(BaseTransientBottomBar baseTransientBottomBar, View view) { Anchor anchor = new Anchor(baseTransientBottomBar, view); if (ViewCompat.isAttachedToWindow(view)) { ViewUtils.addOnGlobalLayoutListener(view, anchor); } view.addOnAttachStateChangeListener(anchor); return anchor; } private Anchor(BaseTransientBottomBar baseTransientBottomBar, View view) { this.transientBottomBar = new WeakReference<>(baseTransientBottomBar); this.anchorView = new WeakReference<>(view); } @Override // android.view.View.OnAttachStateChangeListener public void onViewAttachedToWindow(View view) { if (unanchorIfNoTransientBottomBar()) { return; } ViewUtils.addOnGlobalLayoutListener(view, this); } @Override // android.view.View.OnAttachStateChangeListener public void onViewDetachedFromWindow(View view) { if (unanchorIfNoTransientBottomBar()) { return; } ViewUtils.removeOnGlobalLayoutListener(view, this); } @Override // android.view.ViewTreeObserver.OnGlobalLayoutListener public void onGlobalLayout() { if (unanchorIfNoTransientBottomBar() || !this.transientBottomBar.get().anchorViewLayoutListenerEnabled) { return; } this.transientBottomBar.get().recalculateAndUpdateMargins(); } View getAnchorView() { return this.anchorView.get(); } private boolean unanchorIfNoTransientBottomBar() { if (this.transientBottomBar.get() != null) { return false; } unanchor(); return true; } void unanchor() { if (this.anchorView.get() != null) { this.anchorView.get().removeOnAttachStateChangeListener(this); ViewUtils.removeOnGlobalLayoutListener(this.anchorView.get(), this); } this.anchorView.clear(); this.transientBottomBar.clear(); } } }