968 lines
		
	
	
		
			45 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			968 lines
		
	
	
		
			45 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.floatingactionbutton;
 | |
| 
 | |
| import android.animation.Animator;
 | |
| import android.animation.AnimatorListenerAdapter;
 | |
| import android.animation.AnimatorSet;
 | |
| import android.animation.PropertyValuesHolder;
 | |
| import android.content.Context;
 | |
| import android.content.res.ColorStateList;
 | |
| import android.content.res.TypedArray;
 | |
| import android.graphics.Rect;
 | |
| import android.text.TextUtils;
 | |
| import android.util.AttributeSet;
 | |
| import android.util.Property;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import androidx.coordinatorlayout.widget.CoordinatorLayout;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.animation.MotionSpec;
 | |
| import com.google.android.material.appbar.AppBarLayout;
 | |
| import com.google.android.material.bottomsheet.BottomSheetBehavior;
 | |
| import com.google.android.material.button.MaterialButton;
 | |
| import com.google.android.material.internal.DescendantOffsetUtils;
 | |
| import java.util.Iterator;
 | |
| import java.util.List;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class ExtendedFloatingActionButton extends MaterialButton implements CoordinatorLayout.AttachedBehavior {
 | |
|     private static final int ANIM_STATE_HIDING = 1;
 | |
|     private static final int ANIM_STATE_NONE = 0;
 | |
|     private static final int ANIM_STATE_SHOWING = 2;
 | |
|     private static final int EXTEND = 3;
 | |
|     private static final int EXTEND_STRATEGY_AUTO = 0;
 | |
|     private static final int EXTEND_STRATEGY_MATCH_PARENT = 2;
 | |
|     private static final int EXTEND_STRATEGY_WRAP_CONTENT = 1;
 | |
|     private static final int HIDE = 1;
 | |
|     private static final int SHOW = 0;
 | |
|     private static final int SHRINK = 2;
 | |
|     private int animState;
 | |
|     private boolean animateShowBeforeLayout;
 | |
|     private final CoordinatorLayout.Behavior<ExtendedFloatingActionButton> behavior;
 | |
|     private final AnimatorTracker changeVisibilityTracker;
 | |
|     private final int collapsedSize;
 | |
|     private final MotionStrategy extendStrategy;
 | |
|     private final int extendStrategyType;
 | |
|     private int extendedPaddingEnd;
 | |
|     private int extendedPaddingStart;
 | |
|     private final MotionStrategy hideStrategy;
 | |
|     private boolean isExtended;
 | |
|     private boolean isTransforming;
 | |
|     private int originalHeight;
 | |
|     protected ColorStateList originalTextCsl;
 | |
|     private int originalWidth;
 | |
|     private final MotionStrategy showStrategy;
 | |
|     private final MotionStrategy shrinkStrategy;
 | |
|     private static final int DEF_STYLE_RES = R.style.Widget_MaterialComponents_ExtendedFloatingActionButton_Icon;
 | |
|     static final Property<View, Float> WIDTH = new Property<View, Float>(Float.class, "width") { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.6
 | |
|         @Override // android.util.Property
 | |
|         public void set(View view, Float f) {
 | |
|             view.getLayoutParams().width = f.intValue();
 | |
|             view.requestLayout();
 | |
|         }
 | |
| 
 | |
|         @Override // android.util.Property
 | |
|         public Float get(View view) {
 | |
|             return Float.valueOf(view.getLayoutParams().width);
 | |
|         }
 | |
|     };
 | |
|     static final Property<View, Float> HEIGHT = new Property<View, Float>(Float.class, "height") { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.7
 | |
|         @Override // android.util.Property
 | |
|         public void set(View view, Float f) {
 | |
|             view.getLayoutParams().height = f.intValue();
 | |
|             view.requestLayout();
 | |
|         }
 | |
| 
 | |
|         @Override // android.util.Property
 | |
|         public Float get(View view) {
 | |
|             return Float.valueOf(view.getLayoutParams().height);
 | |
|         }
 | |
|     };
 | |
|     static final Property<View, Float> PADDING_START = new Property<View, Float>(Float.class, "paddingStart") { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.8
 | |
|         @Override // android.util.Property
 | |
|         public void set(View view, Float f) {
 | |
|             ViewCompat.setPaddingRelative(view, f.intValue(), view.getPaddingTop(), ViewCompat.getPaddingEnd(view), view.getPaddingBottom());
 | |
|         }
 | |
| 
 | |
|         @Override // android.util.Property
 | |
|         public Float get(View view) {
 | |
|             return Float.valueOf(ViewCompat.getPaddingStart(view));
 | |
|         }
 | |
|     };
 | |
|     static final Property<View, Float> PADDING_END = new Property<View, Float>(Float.class, "paddingEnd") { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.9
 | |
|         @Override // android.util.Property
 | |
|         public void set(View view, Float f) {
 | |
|             ViewCompat.setPaddingRelative(view, ViewCompat.getPaddingStart(view), view.getPaddingTop(), f.intValue(), view.getPaddingBottom());
 | |
|         }
 | |
| 
 | |
|         @Override // android.util.Property
 | |
|         public Float get(View view) {
 | |
|             return Float.valueOf(ViewCompat.getPaddingEnd(view));
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     public static abstract class OnChangedCallback {
 | |
|         public void onExtended(ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|         }
 | |
| 
 | |
|         public void onHidden(ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|         }
 | |
| 
 | |
|         public void onShown(ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|         }
 | |
| 
 | |
|         public void onShrunken(ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     interface Size {
 | |
|         int getHeight();
 | |
| 
 | |
|         ViewGroup.LayoutParams getLayoutParams();
 | |
| 
 | |
|         int getPaddingEnd();
 | |
| 
 | |
|         int getPaddingStart();
 | |
| 
 | |
|         int getWidth();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.coordinatorlayout.widget.CoordinatorLayout.AttachedBehavior
 | |
|     public CoordinatorLayout.Behavior<ExtendedFloatingActionButton> getBehavior() {
 | |
|         return this.behavior;
 | |
|     }
 | |
| 
 | |
|     public final boolean isExtended() {
 | |
|         return this.isExtended;
 | |
|     }
 | |
| 
 | |
|     public void setAnimateShowBeforeLayout(boolean z) {
 | |
|         this.animateShowBeforeLayout = z;
 | |
|     }
 | |
| 
 | |
|     public ExtendedFloatingActionButton(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public ExtendedFloatingActionButton(Context context, AttributeSet attributeSet) {
 | |
|         this(context, attributeSet, R.attr.extendedFloatingActionButtonStyle);
 | |
|     }
 | |
| 
 | |
|     /* 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 ExtendedFloatingActionButton(android.content.Context r17, android.util.AttributeSet r18, int r19) {
 | |
|         /*
 | |
|             r16 = this;
 | |
|             r0 = r16
 | |
|             r7 = r18
 | |
|             r8 = r19
 | |
|             int r9 = com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.DEF_STYLE_RES
 | |
|             r1 = r17
 | |
|             android.content.Context r1 = com.google.android.material.theme.overlay.MaterialThemeOverlay.wrap(r1, r7, r8, r9)
 | |
|             r0.<init>(r1, r7, r8)
 | |
|             r10 = 0
 | |
|             r0.animState = r10
 | |
|             com.google.android.material.floatingactionbutton.AnimatorTracker r1 = new com.google.android.material.floatingactionbutton.AnimatorTracker
 | |
|             r1.<init>()
 | |
|             r0.changeVisibilityTracker = r1
 | |
|             com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ShowStrategy r11 = new com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ShowStrategy
 | |
|             r11.<init>(r1)
 | |
|             r0.showStrategy = r11
 | |
|             com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$HideStrategy r12 = new com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$HideStrategy
 | |
|             r12.<init>(r1)
 | |
|             r0.hideStrategy = r12
 | |
|             r13 = 1
 | |
|             r0.isExtended = r13
 | |
|             r0.isTransforming = r10
 | |
|             r0.animateShowBeforeLayout = r10
 | |
|             android.content.Context r14 = r16.getContext()
 | |
|             com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ExtendedFloatingActionButtonBehavior r1 = new com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ExtendedFloatingActionButtonBehavior
 | |
|             r1.<init>(r14, r7)
 | |
|             r0.behavior = r1
 | |
|             int[] r3 = com.google.android.material.R.styleable.ExtendedFloatingActionButton
 | |
|             int[] r6 = new int[r10]
 | |
|             r1 = r14
 | |
|             r2 = r18
 | |
|             r4 = r19
 | |
|             r5 = r9
 | |
|             android.content.res.TypedArray r1 = com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(r1, r2, r3, r4, r5, r6)
 | |
|             int r2 = com.google.android.material.R.styleable.ExtendedFloatingActionButton_showMotionSpec
 | |
|             com.google.android.material.animation.MotionSpec r2 = com.google.android.material.animation.MotionSpec.createFromAttribute(r14, r1, r2)
 | |
|             int r3 = com.google.android.material.R.styleable.ExtendedFloatingActionButton_hideMotionSpec
 | |
|             com.google.android.material.animation.MotionSpec r3 = com.google.android.material.animation.MotionSpec.createFromAttribute(r14, r1, r3)
 | |
|             int r4 = com.google.android.material.R.styleable.ExtendedFloatingActionButton_extendMotionSpec
 | |
|             com.google.android.material.animation.MotionSpec r4 = com.google.android.material.animation.MotionSpec.createFromAttribute(r14, r1, r4)
 | |
|             int r5 = com.google.android.material.R.styleable.ExtendedFloatingActionButton_shrinkMotionSpec
 | |
|             com.google.android.material.animation.MotionSpec r5 = com.google.android.material.animation.MotionSpec.createFromAttribute(r14, r1, r5)
 | |
|             int r6 = com.google.android.material.R.styleable.ExtendedFloatingActionButton_collapsedSize
 | |
|             r15 = -1
 | |
|             int r6 = r1.getDimensionPixelSize(r6, r15)
 | |
|             r0.collapsedSize = r6
 | |
|             int r6 = com.google.android.material.R.styleable.ExtendedFloatingActionButton_extendStrategy
 | |
|             int r6 = r1.getInt(r6, r13)
 | |
|             r0.extendStrategyType = r6
 | |
|             int r15 = androidx.core.view.ViewCompat.getPaddingStart(r16)
 | |
|             r0.extendedPaddingStart = r15
 | |
|             int r15 = androidx.core.view.ViewCompat.getPaddingEnd(r16)
 | |
|             r0.extendedPaddingEnd = r15
 | |
|             com.google.android.material.floatingactionbutton.AnimatorTracker r15 = new com.google.android.material.floatingactionbutton.AnimatorTracker
 | |
|             r15.<init>()
 | |
|             com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ChangeSizeStrategy r10 = new com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ChangeSizeStrategy
 | |
|             com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$Size r6 = r0.getSizeFromExtendStrategyType(r6)
 | |
|             r10.<init>(r15, r6, r13)
 | |
|             r0.extendStrategy = r10
 | |
|             com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ChangeSizeStrategy r6 = new com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$ChangeSizeStrategy
 | |
|             com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$1 r13 = new com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton$1
 | |
|             r13.<init>()
 | |
|             r7 = 0
 | |
|             r6.<init>(r15, r13, r7)
 | |
|             r0.shrinkStrategy = r6
 | |
|             r11.setMotionSpec(r2)
 | |
|             r12.setMotionSpec(r3)
 | |
|             r10.setMotionSpec(r4)
 | |
|             r6.setMotionSpec(r5)
 | |
|             r1.recycle()
 | |
|             com.google.android.material.shape.CornerSize r1 = com.google.android.material.shape.ShapeAppearanceModel.PILL
 | |
|             r2 = r18
 | |
|             com.google.android.material.shape.ShapeAppearanceModel$Builder r1 = com.google.android.material.shape.ShapeAppearanceModel.builder(r14, r2, r8, r9, r1)
 | |
|             com.google.android.material.shape.ShapeAppearanceModel r1 = r1.build()
 | |
|             r0.setShapeAppearanceModel(r1)
 | |
|             r16.saveOriginalTextCsl()
 | |
|             return
 | |
|         */
 | |
|         throw new UnsupportedOperationException("Method not decompiled: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.<init>(android.content.Context, android.util.AttributeSet, int):void");
 | |
|     }
 | |
| 
 | |
|     private Size getSizeFromExtendStrategyType(int i) {
 | |
|         final Size size = new Size() { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.2
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getWidth() {
 | |
|                 return (ExtendedFloatingActionButton.this.getMeasuredWidth() - (ExtendedFloatingActionButton.this.getCollapsedPadding() * 2)) + ExtendedFloatingActionButton.this.extendedPaddingStart + ExtendedFloatingActionButton.this.extendedPaddingEnd;
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getHeight() {
 | |
|                 return ExtendedFloatingActionButton.this.getMeasuredHeight();
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getPaddingStart() {
 | |
|                 return ExtendedFloatingActionButton.this.extendedPaddingStart;
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getPaddingEnd() {
 | |
|                 return ExtendedFloatingActionButton.this.extendedPaddingEnd;
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public ViewGroup.LayoutParams getLayoutParams() {
 | |
|                 return new ViewGroup.LayoutParams(-2, -2);
 | |
|             }
 | |
|         };
 | |
|         final Size size2 = new Size() { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.3
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getWidth() {
 | |
|                 ViewGroup.MarginLayoutParams marginLayoutParams;
 | |
|                 if (!(ExtendedFloatingActionButton.this.getParent() instanceof View)) {
 | |
|                     return size.getWidth();
 | |
|                 }
 | |
|                 View view = (View) ExtendedFloatingActionButton.this.getParent();
 | |
|                 ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
 | |
|                 if (layoutParams != null && layoutParams.width == -2) {
 | |
|                     return size.getWidth();
 | |
|                 }
 | |
|                 return (view.getWidth() - ((!(ExtendedFloatingActionButton.this.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) || (marginLayoutParams = (ViewGroup.MarginLayoutParams) ExtendedFloatingActionButton.this.getLayoutParams()) == null) ? 0 : marginLayoutParams.leftMargin + marginLayoutParams.rightMargin)) - (view.getPaddingLeft() + view.getPaddingRight());
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getHeight() {
 | |
|                 ViewGroup.MarginLayoutParams marginLayoutParams;
 | |
|                 if (ExtendedFloatingActionButton.this.originalHeight != -1) {
 | |
|                     if (ExtendedFloatingActionButton.this.originalHeight != 0 && ExtendedFloatingActionButton.this.originalHeight != -2) {
 | |
|                         return ExtendedFloatingActionButton.this.originalHeight;
 | |
|                     }
 | |
|                     return size.getHeight();
 | |
|                 }
 | |
|                 if (!(ExtendedFloatingActionButton.this.getParent() instanceof View)) {
 | |
|                     return size.getHeight();
 | |
|                 }
 | |
|                 View view = (View) ExtendedFloatingActionButton.this.getParent();
 | |
|                 ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
 | |
|                 if (layoutParams != null && layoutParams.height == -2) {
 | |
|                     return size.getHeight();
 | |
|                 }
 | |
|                 return (view.getHeight() - ((!(ExtendedFloatingActionButton.this.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) || (marginLayoutParams = (ViewGroup.MarginLayoutParams) ExtendedFloatingActionButton.this.getLayoutParams()) == null) ? 0 : marginLayoutParams.topMargin + marginLayoutParams.bottomMargin)) - (view.getPaddingTop() + view.getPaddingBottom());
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getPaddingStart() {
 | |
|                 return ExtendedFloatingActionButton.this.extendedPaddingStart;
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getPaddingEnd() {
 | |
|                 return ExtendedFloatingActionButton.this.extendedPaddingEnd;
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public ViewGroup.LayoutParams getLayoutParams() {
 | |
|                 return new ViewGroup.LayoutParams(-1, ExtendedFloatingActionButton.this.originalHeight == 0 ? -2 : ExtendedFloatingActionButton.this.originalHeight);
 | |
|             }
 | |
|         };
 | |
|         return i != 1 ? i != 2 ? new Size() { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.4
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getWidth() {
 | |
|                 if (ExtendedFloatingActionButton.this.originalWidth != -1) {
 | |
|                     if (ExtendedFloatingActionButton.this.originalWidth != 0 && ExtendedFloatingActionButton.this.originalWidth != -2) {
 | |
|                         return ExtendedFloatingActionButton.this.originalWidth;
 | |
|                     }
 | |
|                     return size.getWidth();
 | |
|                 }
 | |
|                 return size2.getWidth();
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getHeight() {
 | |
|                 if (ExtendedFloatingActionButton.this.originalHeight != -1) {
 | |
|                     if (ExtendedFloatingActionButton.this.originalHeight != 0 && ExtendedFloatingActionButton.this.originalHeight != -2) {
 | |
|                         return ExtendedFloatingActionButton.this.originalHeight;
 | |
|                     }
 | |
|                     return size.getHeight();
 | |
|                 }
 | |
|                 return size2.getHeight();
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getPaddingStart() {
 | |
|                 return ExtendedFloatingActionButton.this.extendedPaddingStart;
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public int getPaddingEnd() {
 | |
|                 return ExtendedFloatingActionButton.this.extendedPaddingEnd;
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.Size
 | |
|             public ViewGroup.LayoutParams getLayoutParams() {
 | |
|                 return new ViewGroup.LayoutParams(ExtendedFloatingActionButton.this.originalWidth == 0 ? -2 : ExtendedFloatingActionButton.this.originalWidth, ExtendedFloatingActionButton.this.originalHeight != 0 ? ExtendedFloatingActionButton.this.originalHeight : -2);
 | |
|             }
 | |
|         } : size2 : size;
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.TextView
 | |
|     public void setTextColor(int i) {
 | |
|         super.setTextColor(i);
 | |
|         saveOriginalTextCsl();
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.TextView
 | |
|     public void setTextColor(ColorStateList colorStateList) {
 | |
|         super.setTextColor(colorStateList);
 | |
|         saveOriginalTextCsl();
 | |
|     }
 | |
| 
 | |
|     private void saveOriginalTextCsl() {
 | |
|         this.originalTextCsl = getTextColors();
 | |
|     }
 | |
| 
 | |
|     protected void silentlyUpdateTextColor(ColorStateList colorStateList) {
 | |
|         super.setTextColor(colorStateList);
 | |
|     }
 | |
| 
 | |
|     @Override // com.google.android.material.button.MaterialButton, android.widget.TextView, android.view.View
 | |
|     protected void onAttachedToWindow() {
 | |
|         super.onAttachedToWindow();
 | |
|         if (this.isExtended && TextUtils.isEmpty(getText()) && getIcon() != null) {
 | |
|             this.isExtended = false;
 | |
|             this.shrinkStrategy.performNow();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setExtended(boolean z) {
 | |
|         if (this.isExtended == z) {
 | |
|             return;
 | |
|         }
 | |
|         MotionStrategy motionStrategy = z ? this.extendStrategy : this.shrinkStrategy;
 | |
|         if (motionStrategy.shouldCancel()) {
 | |
|             return;
 | |
|         }
 | |
|         motionStrategy.performNow();
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.TextView, android.view.View
 | |
|     public void setPaddingRelative(int i, int i2, int i3, int i4) {
 | |
|         super.setPaddingRelative(i, i2, i3, i4);
 | |
|         if (!this.isExtended || this.isTransforming) {
 | |
|             return;
 | |
|         }
 | |
|         this.extendedPaddingStart = i;
 | |
|         this.extendedPaddingEnd = i3;
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.TextView, android.view.View
 | |
|     public void setPadding(int i, int i2, int i3, int i4) {
 | |
|         super.setPadding(i, i2, i3, i4);
 | |
|         if (!this.isExtended || this.isTransforming) {
 | |
|             return;
 | |
|         }
 | |
|         this.extendedPaddingStart = ViewCompat.getPaddingStart(this);
 | |
|         this.extendedPaddingEnd = ViewCompat.getPaddingEnd(this);
 | |
|     }
 | |
| 
 | |
|     public void addOnShowAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.showStrategy.addAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void removeOnShowAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.showStrategy.removeAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void addOnHideAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.hideStrategy.addAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void removeOnHideAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.hideStrategy.removeAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void addOnShrinkAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.shrinkStrategy.addAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void removeOnShrinkAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.shrinkStrategy.removeAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void addOnExtendAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.extendStrategy.addAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void removeOnExtendAnimationListener(Animator.AnimatorListener animatorListener) {
 | |
|         this.extendStrategy.removeAnimationListener(animatorListener);
 | |
|     }
 | |
| 
 | |
|     public void hide() {
 | |
|         performMotion(1, null);
 | |
|     }
 | |
| 
 | |
|     public void hide(OnChangedCallback onChangedCallback) {
 | |
|         performMotion(1, onChangedCallback);
 | |
|     }
 | |
| 
 | |
|     public void show() {
 | |
|         performMotion(0, null);
 | |
|     }
 | |
| 
 | |
|     public void show(OnChangedCallback onChangedCallback) {
 | |
|         performMotion(0, onChangedCallback);
 | |
|     }
 | |
| 
 | |
|     public void extend() {
 | |
|         performMotion(3, null);
 | |
|     }
 | |
| 
 | |
|     public void extend(OnChangedCallback onChangedCallback) {
 | |
|         performMotion(3, onChangedCallback);
 | |
|     }
 | |
| 
 | |
|     public void shrink() {
 | |
|         performMotion(2, null);
 | |
|     }
 | |
| 
 | |
|     public void shrink(OnChangedCallback onChangedCallback) {
 | |
|         performMotion(2, onChangedCallback);
 | |
|     }
 | |
| 
 | |
|     public MotionSpec getShowMotionSpec() {
 | |
|         return this.showStrategy.getMotionSpec();
 | |
|     }
 | |
| 
 | |
|     public void setShowMotionSpec(MotionSpec motionSpec) {
 | |
|         this.showStrategy.setMotionSpec(motionSpec);
 | |
|     }
 | |
| 
 | |
|     public void setShowMotionSpecResource(int i) {
 | |
|         setShowMotionSpec(MotionSpec.createFromResource(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     public MotionSpec getHideMotionSpec() {
 | |
|         return this.hideStrategy.getMotionSpec();
 | |
|     }
 | |
| 
 | |
|     public void setHideMotionSpec(MotionSpec motionSpec) {
 | |
|         this.hideStrategy.setMotionSpec(motionSpec);
 | |
|     }
 | |
| 
 | |
|     public void setHideMotionSpecResource(int i) {
 | |
|         setHideMotionSpec(MotionSpec.createFromResource(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     public MotionSpec getExtendMotionSpec() {
 | |
|         return this.extendStrategy.getMotionSpec();
 | |
|     }
 | |
| 
 | |
|     public void setExtendMotionSpec(MotionSpec motionSpec) {
 | |
|         this.extendStrategy.setMotionSpec(motionSpec);
 | |
|     }
 | |
| 
 | |
|     public void setExtendMotionSpecResource(int i) {
 | |
|         setExtendMotionSpec(MotionSpec.createFromResource(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     public MotionSpec getShrinkMotionSpec() {
 | |
|         return this.shrinkStrategy.getMotionSpec();
 | |
|     }
 | |
| 
 | |
|     public void setShrinkMotionSpec(MotionSpec motionSpec) {
 | |
|         this.shrinkStrategy.setMotionSpec(motionSpec);
 | |
|     }
 | |
| 
 | |
|     public void setShrinkMotionSpecResource(int i) {
 | |
|         setShrinkMotionSpec(MotionSpec.createFromResource(getContext(), i));
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void performMotion(int i, final OnChangedCallback onChangedCallback) {
 | |
|         final MotionStrategy motionStrategy;
 | |
|         if (i == 0) {
 | |
|             motionStrategy = this.showStrategy;
 | |
|         } else if (i == 1) {
 | |
|             motionStrategy = this.hideStrategy;
 | |
|         } else if (i == 2) {
 | |
|             motionStrategy = this.shrinkStrategy;
 | |
|         } else {
 | |
|             if (i != 3) {
 | |
|                 throw new IllegalStateException("Unknown strategy type: " + i);
 | |
|             }
 | |
|             motionStrategy = this.extendStrategy;
 | |
|         }
 | |
|         if (motionStrategy.shouldCancel()) {
 | |
|             return;
 | |
|         }
 | |
|         if (!shouldAnimateVisibilityChange()) {
 | |
|             motionStrategy.performNow();
 | |
|             motionStrategy.onChange(onChangedCallback);
 | |
|             return;
 | |
|         }
 | |
|         if (i == 2) {
 | |
|             ViewGroup.LayoutParams layoutParams = getLayoutParams();
 | |
|             if (layoutParams != null) {
 | |
|                 this.originalWidth = layoutParams.width;
 | |
|                 this.originalHeight = layoutParams.height;
 | |
|             } else {
 | |
|                 this.originalWidth = getWidth();
 | |
|                 this.originalHeight = getHeight();
 | |
|             }
 | |
|         }
 | |
|         measure(0, 0);
 | |
|         AnimatorSet createAnimator = motionStrategy.createAnimator();
 | |
|         createAnimator.addListener(new AnimatorListenerAdapter() { // from class: com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton.5
 | |
|             private boolean cancelled;
 | |
| 
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationStart(Animator animator) {
 | |
|                 motionStrategy.onAnimationStart(animator);
 | |
|                 this.cancelled = false;
 | |
|             }
 | |
| 
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationCancel(Animator animator) {
 | |
|                 this.cancelled = true;
 | |
|                 motionStrategy.onAnimationCancel();
 | |
|             }
 | |
| 
 | |
|             @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
 | |
|             public void onAnimationEnd(Animator animator) {
 | |
|                 motionStrategy.onAnimationEnd();
 | |
|                 if (this.cancelled) {
 | |
|                     return;
 | |
|                 }
 | |
|                 motionStrategy.onChange(onChangedCallback);
 | |
|             }
 | |
|         });
 | |
|         Iterator<Animator.AnimatorListener> it = motionStrategy.getListeners().iterator();
 | |
|         while (it.hasNext()) {
 | |
|             createAnimator.addListener(it.next());
 | |
|         }
 | |
|         createAnimator.start();
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public boolean isOrWillBeShown() {
 | |
|         return getVisibility() != 0 ? this.animState == 2 : this.animState != 1;
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public boolean isOrWillBeHidden() {
 | |
|         return getVisibility() == 0 ? this.animState == 1 : this.animState != 2;
 | |
|     }
 | |
| 
 | |
|     private boolean shouldAnimateVisibilityChange() {
 | |
|         return (ViewCompat.isLaidOut(this) || (!isOrWillBeShown() && this.animateShowBeforeLayout)) && !isInEditMode();
 | |
|     }
 | |
| 
 | |
|     int getCollapsedSize() {
 | |
|         int i = this.collapsedSize;
 | |
|         return i < 0 ? (Math.min(ViewCompat.getPaddingStart(this), ViewCompat.getPaddingEnd(this)) * 2) + getIconSize() : i;
 | |
|     }
 | |
| 
 | |
|     int getCollapsedPadding() {
 | |
|         return (getCollapsedSize() - getIconSize()) / 2;
 | |
|     }
 | |
| 
 | |
|     protected static class ExtendedFloatingActionButtonBehavior<T extends ExtendedFloatingActionButton> extends CoordinatorLayout.Behavior<T> {
 | |
|         private static final boolean AUTO_HIDE_DEFAULT = false;
 | |
|         private static final boolean AUTO_SHRINK_DEFAULT = true;
 | |
|         private boolean autoHideEnabled;
 | |
|         private boolean autoShrinkEnabled;
 | |
|         private OnChangedCallback internalAutoHideCallback;
 | |
|         private OnChangedCallback internalAutoShrinkCallback;
 | |
|         private Rect tmpRect;
 | |
| 
 | |
|         public boolean isAutoHideEnabled() {
 | |
|             return this.autoHideEnabled;
 | |
|         }
 | |
| 
 | |
|         public boolean isAutoShrinkEnabled() {
 | |
|             return this.autoShrinkEnabled;
 | |
|         }
 | |
| 
 | |
|         public void setAutoHideEnabled(boolean z) {
 | |
|             this.autoHideEnabled = z;
 | |
|         }
 | |
| 
 | |
|         public void setAutoShrinkEnabled(boolean z) {
 | |
|             this.autoShrinkEnabled = z;
 | |
|         }
 | |
| 
 | |
|         void setInternalAutoHideCallback(OnChangedCallback onChangedCallback) {
 | |
|             this.internalAutoHideCallback = onChangedCallback;
 | |
|         }
 | |
| 
 | |
|         void setInternalAutoShrinkCallback(OnChangedCallback onChangedCallback) {
 | |
|             this.internalAutoShrinkCallback = onChangedCallback;
 | |
|         }
 | |
| 
 | |
|         public ExtendedFloatingActionButtonBehavior() {
 | |
|             this.autoHideEnabled = false;
 | |
|             this.autoShrinkEnabled = AUTO_SHRINK_DEFAULT;
 | |
|         }
 | |
| 
 | |
|         public ExtendedFloatingActionButtonBehavior(Context context, AttributeSet attributeSet) {
 | |
|             super(context, attributeSet);
 | |
|             TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.ExtendedFloatingActionButton_Behavior_Layout);
 | |
|             this.autoHideEnabled = obtainStyledAttributes.getBoolean(R.styleable.ExtendedFloatingActionButton_Behavior_Layout_behavior_autoHide, false);
 | |
|             this.autoShrinkEnabled = obtainStyledAttributes.getBoolean(R.styleable.ExtendedFloatingActionButton_Behavior_Layout_behavior_autoShrink, AUTO_SHRINK_DEFAULT);
 | |
|             obtainStyledAttributes.recycle();
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
 | |
|         public boolean getInsetDodgeRect(CoordinatorLayout coordinatorLayout, ExtendedFloatingActionButton extendedFloatingActionButton, Rect rect) {
 | |
|             return super.getInsetDodgeRect(coordinatorLayout, (CoordinatorLayout) extendedFloatingActionButton, rect);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
 | |
|         public void onAttachedToLayoutParams(CoordinatorLayout.LayoutParams layoutParams) {
 | |
|             if (layoutParams.dodgeInsetEdges == 0) {
 | |
|                 layoutParams.dodgeInsetEdges = 80;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
 | |
|         public boolean onDependentViewChanged(CoordinatorLayout coordinatorLayout, ExtendedFloatingActionButton extendedFloatingActionButton, View view) {
 | |
|             if (view instanceof AppBarLayout) {
 | |
|                 updateFabVisibilityForAppBarLayout(coordinatorLayout, (AppBarLayout) view, extendedFloatingActionButton);
 | |
|                 return false;
 | |
|             }
 | |
|             if (!isBottomSheet(view)) {
 | |
|                 return false;
 | |
|             }
 | |
|             updateFabVisibilityForBottomSheet(view, extendedFloatingActionButton);
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         private static boolean isBottomSheet(View view) {
 | |
|             ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
 | |
|             if (layoutParams instanceof CoordinatorLayout.LayoutParams) {
 | |
|                 return ((CoordinatorLayout.LayoutParams) layoutParams).getBehavior() instanceof BottomSheetBehavior;
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         private boolean shouldUpdateVisibility(View view, ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|             CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) extendedFloatingActionButton.getLayoutParams();
 | |
|             if ((this.autoHideEnabled || this.autoShrinkEnabled) && layoutParams.getAnchorId() == view.getId()) {
 | |
|                 return AUTO_SHRINK_DEFAULT;
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         private boolean updateFabVisibilityForAppBarLayout(CoordinatorLayout coordinatorLayout, AppBarLayout appBarLayout, ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|             if (!shouldUpdateVisibility(appBarLayout, extendedFloatingActionButton)) {
 | |
|                 return false;
 | |
|             }
 | |
|             if (this.tmpRect == null) {
 | |
|                 this.tmpRect = new Rect();
 | |
|             }
 | |
|             Rect rect = this.tmpRect;
 | |
|             DescendantOffsetUtils.getDescendantRect(coordinatorLayout, appBarLayout, rect);
 | |
|             if (rect.bottom <= appBarLayout.getMinimumHeightForVisibleOverlappingContent()) {
 | |
|                 shrinkOrHide(extendedFloatingActionButton);
 | |
|                 return AUTO_SHRINK_DEFAULT;
 | |
|             }
 | |
|             extendOrShow(extendedFloatingActionButton);
 | |
|             return AUTO_SHRINK_DEFAULT;
 | |
|         }
 | |
| 
 | |
|         private boolean updateFabVisibilityForBottomSheet(View view, ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|             if (!shouldUpdateVisibility(view, extendedFloatingActionButton)) {
 | |
|                 return false;
 | |
|             }
 | |
|             if (view.getTop() < (extendedFloatingActionButton.getHeight() / 2) + ((CoordinatorLayout.LayoutParams) extendedFloatingActionButton.getLayoutParams()).topMargin) {
 | |
|                 shrinkOrHide(extendedFloatingActionButton);
 | |
|                 return AUTO_SHRINK_DEFAULT;
 | |
|             }
 | |
|             extendOrShow(extendedFloatingActionButton);
 | |
|             return AUTO_SHRINK_DEFAULT;
 | |
|         }
 | |
| 
 | |
|         protected void shrinkOrHide(ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|             boolean z = this.autoShrinkEnabled;
 | |
|             extendedFloatingActionButton.performMotion(z ? 2 : 1, z ? this.internalAutoShrinkCallback : this.internalAutoHideCallback);
 | |
|         }
 | |
| 
 | |
|         protected void extendOrShow(ExtendedFloatingActionButton extendedFloatingActionButton) {
 | |
|             boolean z = this.autoShrinkEnabled;
 | |
|             extendedFloatingActionButton.performMotion(z ? 3 : 0, z ? this.internalAutoShrinkCallback : this.internalAutoHideCallback);
 | |
|         }
 | |
| 
 | |
|         @Override // androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
 | |
|         public boolean onLayoutChild(CoordinatorLayout coordinatorLayout, ExtendedFloatingActionButton extendedFloatingActionButton, int i) {
 | |
|             List<View> dependencies = coordinatorLayout.getDependencies(extendedFloatingActionButton);
 | |
|             int size = dependencies.size();
 | |
|             for (int i2 = 0; i2 < size; i2++) {
 | |
|                 View view = dependencies.get(i2);
 | |
|                 if (view instanceof AppBarLayout) {
 | |
|                     if (updateFabVisibilityForAppBarLayout(coordinatorLayout, (AppBarLayout) view, extendedFloatingActionButton)) {
 | |
|                         break;
 | |
|                     }
 | |
|                 } else {
 | |
|                     if (isBottomSheet(view) && updateFabVisibilityForBottomSheet(view, extendedFloatingActionButton)) {
 | |
|                         break;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             coordinatorLayout.onLayoutChild(extendedFloatingActionButton, i);
 | |
|             return AUTO_SHRINK_DEFAULT;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     class ChangeSizeStrategy extends BaseMotionStrategy {
 | |
|         private final boolean extending;
 | |
|         private final Size size;
 | |
| 
 | |
|         ChangeSizeStrategy(AnimatorTracker animatorTracker, Size size, boolean z) {
 | |
|             super(ExtendedFloatingActionButton.this, animatorTracker);
 | |
|             this.size = size;
 | |
|             this.extending = z;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void performNow() {
 | |
|             ExtendedFloatingActionButton.this.isExtended = this.extending;
 | |
|             ViewGroup.LayoutParams layoutParams = ExtendedFloatingActionButton.this.getLayoutParams();
 | |
|             if (layoutParams == null) {
 | |
|                 return;
 | |
|             }
 | |
|             if (!this.extending) {
 | |
|                 ExtendedFloatingActionButton.this.originalWidth = layoutParams.width;
 | |
|                 ExtendedFloatingActionButton.this.originalHeight = layoutParams.height;
 | |
|             }
 | |
|             layoutParams.width = this.size.getLayoutParams().width;
 | |
|             layoutParams.height = this.size.getLayoutParams().height;
 | |
|             ViewCompat.setPaddingRelative(ExtendedFloatingActionButton.this, this.size.getPaddingStart(), ExtendedFloatingActionButton.this.getPaddingTop(), this.size.getPaddingEnd(), ExtendedFloatingActionButton.this.getPaddingBottom());
 | |
|             ExtendedFloatingActionButton.this.requestLayout();
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onChange(OnChangedCallback onChangedCallback) {
 | |
|             if (onChangedCallback == null) {
 | |
|                 return;
 | |
|             }
 | |
|             if (this.extending) {
 | |
|                 onChangedCallback.onExtended(ExtendedFloatingActionButton.this);
 | |
|             } else {
 | |
|                 onChangedCallback.onShrunken(ExtendedFloatingActionButton.this);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public int getDefaultMotionSpecResource() {
 | |
|             if (this.extending) {
 | |
|                 return R.animator.mtrl_extended_fab_change_size_expand_motion_spec;
 | |
|             }
 | |
|             return R.animator.mtrl_extended_fab_change_size_collapse_motion_spec;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public AnimatorSet createAnimator() {
 | |
|             MotionSpec currentMotionSpec = getCurrentMotionSpec();
 | |
|             if (currentMotionSpec.hasPropertyValues("width")) {
 | |
|                 PropertyValuesHolder[] propertyValues = currentMotionSpec.getPropertyValues("width");
 | |
|                 propertyValues[0].setFloatValues(ExtendedFloatingActionButton.this.getWidth(), this.size.getWidth());
 | |
|                 currentMotionSpec.setPropertyValues("width", propertyValues);
 | |
|             }
 | |
|             if (currentMotionSpec.hasPropertyValues("height")) {
 | |
|                 PropertyValuesHolder[] propertyValues2 = currentMotionSpec.getPropertyValues("height");
 | |
|                 propertyValues2[0].setFloatValues(ExtendedFloatingActionButton.this.getHeight(), this.size.getHeight());
 | |
|                 currentMotionSpec.setPropertyValues("height", propertyValues2);
 | |
|             }
 | |
|             if (currentMotionSpec.hasPropertyValues("paddingStart")) {
 | |
|                 PropertyValuesHolder[] propertyValues3 = currentMotionSpec.getPropertyValues("paddingStart");
 | |
|                 propertyValues3[0].setFloatValues(ViewCompat.getPaddingStart(ExtendedFloatingActionButton.this), this.size.getPaddingStart());
 | |
|                 currentMotionSpec.setPropertyValues("paddingStart", propertyValues3);
 | |
|             }
 | |
|             if (currentMotionSpec.hasPropertyValues("paddingEnd")) {
 | |
|                 PropertyValuesHolder[] propertyValues4 = currentMotionSpec.getPropertyValues("paddingEnd");
 | |
|                 propertyValues4[0].setFloatValues(ViewCompat.getPaddingEnd(ExtendedFloatingActionButton.this), this.size.getPaddingEnd());
 | |
|                 currentMotionSpec.setPropertyValues("paddingEnd", propertyValues4);
 | |
|             }
 | |
|             if (currentMotionSpec.hasPropertyValues("labelOpacity")) {
 | |
|                 PropertyValuesHolder[] propertyValues5 = currentMotionSpec.getPropertyValues("labelOpacity");
 | |
|                 boolean z = this.extending;
 | |
|                 propertyValues5[0].setFloatValues(z ? 0.0f : 1.0f, z ? 1.0f : 0.0f);
 | |
|                 currentMotionSpec.setPropertyValues("labelOpacity", propertyValues5);
 | |
|             }
 | |
|             return super.createAnimator(currentMotionSpec);
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onAnimationStart(Animator animator) {
 | |
|             super.onAnimationStart(animator);
 | |
|             ExtendedFloatingActionButton.this.isExtended = this.extending;
 | |
|             ExtendedFloatingActionButton.this.isTransforming = true;
 | |
|             ExtendedFloatingActionButton.this.setHorizontallyScrolling(true);
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onAnimationEnd() {
 | |
|             super.onAnimationEnd();
 | |
|             ExtendedFloatingActionButton.this.isTransforming = false;
 | |
|             ExtendedFloatingActionButton.this.setHorizontallyScrolling(false);
 | |
|             ViewGroup.LayoutParams layoutParams = ExtendedFloatingActionButton.this.getLayoutParams();
 | |
|             if (layoutParams == null) {
 | |
|                 return;
 | |
|             }
 | |
|             layoutParams.width = this.size.getLayoutParams().width;
 | |
|             layoutParams.height = this.size.getLayoutParams().height;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public boolean shouldCancel() {
 | |
|             return this.extending == ExtendedFloatingActionButton.this.isExtended || ExtendedFloatingActionButton.this.getIcon() == null || TextUtils.isEmpty(ExtendedFloatingActionButton.this.getText());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     class ShowStrategy extends BaseMotionStrategy {
 | |
|         public ShowStrategy(AnimatorTracker animatorTracker) {
 | |
|             super(ExtendedFloatingActionButton.this, animatorTracker);
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void performNow() {
 | |
|             ExtendedFloatingActionButton.this.setVisibility(0);
 | |
|             ExtendedFloatingActionButton.this.setAlpha(1.0f);
 | |
|             ExtendedFloatingActionButton.this.setScaleY(1.0f);
 | |
|             ExtendedFloatingActionButton.this.setScaleX(1.0f);
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onChange(OnChangedCallback onChangedCallback) {
 | |
|             if (onChangedCallback != null) {
 | |
|                 onChangedCallback.onShown(ExtendedFloatingActionButton.this);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public int getDefaultMotionSpecResource() {
 | |
|             return R.animator.mtrl_extended_fab_show_motion_spec;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onAnimationStart(Animator animator) {
 | |
|             super.onAnimationStart(animator);
 | |
|             ExtendedFloatingActionButton.this.setVisibility(0);
 | |
|             ExtendedFloatingActionButton.this.animState = 2;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onAnimationEnd() {
 | |
|             super.onAnimationEnd();
 | |
|             ExtendedFloatingActionButton.this.animState = 0;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public boolean shouldCancel() {
 | |
|             return ExtendedFloatingActionButton.this.isOrWillBeShown();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     class HideStrategy extends BaseMotionStrategy {
 | |
|         private boolean isCancelled;
 | |
| 
 | |
|         public HideStrategy(AnimatorTracker animatorTracker) {
 | |
|             super(ExtendedFloatingActionButton.this, animatorTracker);
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void performNow() {
 | |
|             ExtendedFloatingActionButton.this.setVisibility(8);
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onChange(OnChangedCallback onChangedCallback) {
 | |
|             if (onChangedCallback != null) {
 | |
|                 onChangedCallback.onHidden(ExtendedFloatingActionButton.this);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public boolean shouldCancel() {
 | |
|             return ExtendedFloatingActionButton.this.isOrWillBeHidden();
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public int getDefaultMotionSpecResource() {
 | |
|             return R.animator.mtrl_extended_fab_hide_motion_spec;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onAnimationStart(Animator animator) {
 | |
|             super.onAnimationStart(animator);
 | |
|             this.isCancelled = false;
 | |
|             ExtendedFloatingActionButton.this.setVisibility(0);
 | |
|             ExtendedFloatingActionButton.this.animState = 1;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onAnimationCancel() {
 | |
|             super.onAnimationCancel();
 | |
|             this.isCancelled = true;
 | |
|         }
 | |
| 
 | |
|         @Override // com.google.android.material.floatingactionbutton.BaseMotionStrategy, com.google.android.material.floatingactionbutton.MotionStrategy
 | |
|         public void onAnimationEnd() {
 | |
|             super.onAnimationEnd();
 | |
|             ExtendedFloatingActionButton.this.animState = 0;
 | |
|             if (this.isCancelled) {
 | |
|                 return;
 | |
|             }
 | |
|             ExtendedFloatingActionButton.this.setVisibility(8);
 | |
|         }
 | |
|     }
 | |
| }
 |