CrackMe.apk
Download file
package com.google.android.material.floatingactionbutton;
import android.animation.Animator;
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.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatDrawableManager;
import androidx.appcompat.widget.AppCompatImageHelper;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.util.Preconditions;
import androidx.core.view.TintableBackgroundView;
import androidx.core.view.ViewCompat;
import androidx.core.widget.TintableImageSourceView;
import com.google.android.material.R;
import com.google.android.material.animation.MotionSpec;
import com.google.android.material.animation.TransformationCallback;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.expandable.ExpandableTransformationWidget;
import com.google.android.material.expandable.ExpandableWidgetHelper;
import com.google.android.material.floatingactionbutton.FloatingActionButtonImpl;
import com.google.android.material.internal.DescendantOffsetUtils;
import com.google.android.material.internal.VisibilityAwareImageButton;
import com.google.android.material.shadow.ShadowViewDelegate;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.Shapeable;
import com.google.android.material.stateful.ExtendableSavedState;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;
@CoordinatorLayout.DefaultBehavior(Behavior.class)
public class FloatingActionButton extends VisibilityAwareImageButton implements TintableBackgroundView, TintableImageSourceView, ExpandableTransformationWidget, Shapeable {
private static final int AUTO_MINI_LARGEST_SCREEN_WIDTH = 470;
private static final int DEF_STYLE_RES = R.style.Widget_Design_FloatingActionButton;
private static final String EXPANDABLE_WIDGET_HELPER_KEY = "expandableWidgetHelper";
private static final String LOG_TAG = "FloatingActionButton";
public static final int NO_CUSTOM_SIZE = 0;
public static final int SIZE_AUTO = -1;
public static final int SIZE_MINI = 1;
public static final int SIZE_NORMAL = 0;
private ColorStateList backgroundTint;
private PorterDuff.Mode backgroundTintMode;
private int borderWidth;
boolean compatPadding;
private int customSize;
private final ExpandableWidgetHelper expandableWidgetHelper;
private final AppCompatImageHelper imageHelper;
private PorterDuff.Mode imageMode;
/* access modifiers changed from: private */
public int imagePadding;
private ColorStateList imageTint;
private FloatingActionButtonImpl impl;
private int maxImageSize;
private ColorStateList rippleColor;
final Rect shadowPadding;
private int size;
private final Rect touchArea;
public static abstract class OnVisibilityChangedListener {
public void onHidden(FloatingActionButton floatingActionButton) {
}
public void onShown(FloatingActionButton floatingActionButton) {
}
}
@Retention(RetentionPolicy.SOURCE)
public @interface Size {
}
public FloatingActionButton(Context context) {
this(context, (AttributeSet) null);
}
public FloatingActionButton(Context context, AttributeSet attributeSet) {
this(context, attributeSet, R.attr.floatingActionButtonStyle);
}
/* JADX WARNING: Illegal instructions before constructor call */
/* Code decompiled incorrectly, please refer to instructions dump. */
public FloatingActionButton(android.content.Context r11, android.util.AttributeSet r12, int r13) {
/*
r10 = this;
int r6 = DEF_STYLE_RES
android.content.Context r11 = com.google.android.material.internal.ThemeEnforcement.createThemedContext(r11, r12, r13, r6)
r10.<init>(r11, r12, r13)
android.graphics.Rect r11 = new android.graphics.Rect
r11.<init>()
r10.shadowPadding = r11
android.graphics.Rect r11 = new android.graphics.Rect
r11.<init>()
r10.touchArea = r11
android.content.Context r11 = r10.getContext()
int[] r2 = com.google.android.material.R.styleable.FloatingActionButton
r7 = 0
int[] r5 = new int[r7]
r0 = r11
r1 = r12
r3 = r13
r4 = r6
android.content.res.TypedArray r0 = com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(r0, r1, r2, r3, r4, r5)
int r1 = com.google.android.material.R.styleable.FloatingActionButton_backgroundTint
android.content.res.ColorStateList r1 = com.google.android.material.resources.MaterialResources.getColorStateList((android.content.Context) r11, (android.content.res.TypedArray) r0, (int) r1)
r10.backgroundTint = r1
int r1 = com.google.android.material.R.styleable.FloatingActionButton_backgroundTintMode
r2 = -1
int r1 = r0.getInt(r1, r2)
r3 = 0
android.graphics.PorterDuff$Mode r1 = com.google.android.material.internal.ViewUtils.parseTintMode(r1, r3)
r10.backgroundTintMode = r1
int r1 = com.google.android.material.R.styleable.FloatingActionButton_rippleColor
android.content.res.ColorStateList r1 = com.google.android.material.resources.MaterialResources.getColorStateList((android.content.Context) r11, (android.content.res.TypedArray) r0, (int) r1)
r10.rippleColor = r1
int r1 = com.google.android.material.R.styleable.FloatingActionButton_fabSize
int r1 = r0.getInt(r1, r2)
r10.size = r1
int r1 = com.google.android.material.R.styleable.FloatingActionButton_fabCustomSize
int r1 = r0.getDimensionPixelSize(r1, r7)
r10.customSize = r1
int r1 = com.google.android.material.R.styleable.FloatingActionButton_borderWidth
int r1 = r0.getDimensionPixelSize(r1, r7)
r10.borderWidth = r1
int r1 = com.google.android.material.R.styleable.FloatingActionButton_elevation
r2 = 0
float r1 = r0.getDimension(r1, r2)
int r3 = com.google.android.material.R.styleable.FloatingActionButton_hoveredFocusedTranslationZ
float r3 = r0.getDimension(r3, r2)
int r4 = com.google.android.material.R.styleable.FloatingActionButton_pressedTranslationZ
float r2 = r0.getDimension(r4, r2)
int r4 = com.google.android.material.R.styleable.FloatingActionButton_useCompatPadding
boolean r4 = r0.getBoolean(r4, r7)
r10.compatPadding = r4
android.content.res.Resources r4 = r10.getResources()
int r5 = com.google.android.material.R.dimen.mtrl_fab_min_touch_target
int r4 = r4.getDimensionPixelSize(r5)
int r5 = com.google.android.material.R.styleable.FloatingActionButton_maxImageSize
int r5 = r0.getDimensionPixelSize(r5, r7)
r10.maxImageSize = r5
int r5 = com.google.android.material.R.styleable.FloatingActionButton_showMotionSpec
com.google.android.material.animation.MotionSpec r5 = com.google.android.material.animation.MotionSpec.createFromAttribute(r11, r0, r5)
int r8 = com.google.android.material.R.styleable.FloatingActionButton_hideMotionSpec
com.google.android.material.animation.MotionSpec r8 = com.google.android.material.animation.MotionSpec.createFromAttribute(r11, r0, r8)
com.google.android.material.shape.CornerSize r9 = com.google.android.material.shape.ShapeAppearanceModel.PILL
com.google.android.material.shape.ShapeAppearanceModel$Builder r11 = com.google.android.material.shape.ShapeAppearanceModel.builder((android.content.Context) r11, (android.util.AttributeSet) r12, (int) r13, (int) r6, (com.google.android.material.shape.CornerSize) r9)
com.google.android.material.shape.ShapeAppearanceModel r11 = r11.build()
int r6 = com.google.android.material.R.styleable.FloatingActionButton_ensureMinTouchTargetSize
boolean r6 = r0.getBoolean(r6, r7)
r0.recycle()
androidx.appcompat.widget.AppCompatImageHelper r0 = new androidx.appcompat.widget.AppCompatImageHelper
r0.<init>(r10)
r10.imageHelper = r0
r0.loadFromAttributes(r12, r13)
com.google.android.material.expandable.ExpandableWidgetHelper r12 = new com.google.android.material.expandable.ExpandableWidgetHelper
r12.<init>(r10)
r10.expandableWidgetHelper = r12
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r12 = r10.getImpl()
r12.setShapeAppearance(r11)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
android.content.res.ColorStateList r12 = r10.backgroundTint
android.graphics.PorterDuff$Mode r13 = r10.backgroundTintMode
android.content.res.ColorStateList r0 = r10.rippleColor
int r7 = r10.borderWidth
r11.initializeBackgroundDrawable(r12, r13, r0, r7)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
r11.setMinTouchTargetSize(r4)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
r11.setElevation(r1)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
r11.setHoveredFocusedTranslationZ(r3)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
r11.setPressedTranslationZ(r2)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
int r12 = r10.maxImageSize
r11.setMaxImageSize(r12)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
r11.setShowMotionSpec(r5)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
r11.setHideMotionSpec(r8)
com.google.android.material.floatingactionbutton.FloatingActionButtonImpl r11 = r10.getImpl()
r11.setEnsureMinTouchTargetSize(r6)
android.widget.ImageView$ScaleType r11 = android.widget.ImageView.ScaleType.MATRIX
r10.setScaleType(r11)
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.material.floatingactionbutton.FloatingActionButton.<init>(android.content.Context, android.util.AttributeSet, int):void");
}
/* access modifiers changed from: protected */
public void onMeasure(int i, int i2) {
int sizeDimension = getSizeDimension();
this.imagePadding = (sizeDimension - this.maxImageSize) / 2;
getImpl().updatePadding();
int min = Math.min(resolveAdjustedSize(sizeDimension, i), resolveAdjustedSize(sizeDimension, i2));
setMeasuredDimension(this.shadowPadding.left + min + this.shadowPadding.right, min + this.shadowPadding.top + this.shadowPadding.bottom);
}
@Deprecated
public int getRippleColor() {
ColorStateList colorStateList = this.rippleColor;
if (colorStateList != null) {
return colorStateList.getDefaultColor();
}
return 0;
}
public ColorStateList getRippleColorStateList() {
return this.rippleColor;
}
public void setRippleColor(int i) {
setRippleColor(ColorStateList.valueOf(i));
}
public void setRippleColor(ColorStateList colorStateList) {
if (this.rippleColor != colorStateList) {
this.rippleColor = colorStateList;
getImpl().setRippleColor(this.rippleColor);
}
}
public ColorStateList getBackgroundTintList() {
return this.backgroundTint;
}
public void setBackgroundTintList(ColorStateList colorStateList) {
if (this.backgroundTint != colorStateList) {
this.backgroundTint = colorStateList;
getImpl().setBackgroundTintList(colorStateList);
}
}
public PorterDuff.Mode getBackgroundTintMode() {
return this.backgroundTintMode;
}
public void setBackgroundTintMode(PorterDuff.Mode mode) {
if (this.backgroundTintMode != mode) {
this.backgroundTintMode = mode;
getImpl().setBackgroundTintMode(mode);
}
}
public void setSupportBackgroundTintList(ColorStateList colorStateList) {
setBackgroundTintList(colorStateList);
}
public ColorStateList getSupportBackgroundTintList() {
return getBackgroundTintList();
}
public void setSupportBackgroundTintMode(PorterDuff.Mode mode) {
setBackgroundTintMode(mode);
}
public PorterDuff.Mode getSupportBackgroundTintMode() {
return getBackgroundTintMode();
}
public void setSupportImageTintList(ColorStateList colorStateList) {
if (this.imageTint != colorStateList) {
this.imageTint = colorStateList;
onApplySupportImageTint();
}
}
public ColorStateList getSupportImageTintList() {
return this.imageTint;
}
public void setSupportImageTintMode(PorterDuff.Mode mode) {
if (this.imageMode != mode) {
this.imageMode = mode;
onApplySupportImageTint();
}
}
public PorterDuff.Mode getSupportImageTintMode() {
return this.imageMode;
}
private void onApplySupportImageTint() {
Drawable drawable = getDrawable();
if (drawable != null) {
ColorStateList colorStateList = this.imageTint;
if (colorStateList == null) {
DrawableCompat.clearColorFilter(drawable);
return;
}
int colorForState = colorStateList.getColorForState(getDrawableState(), 0);
PorterDuff.Mode mode = this.imageMode;
if (mode == null) {
mode = PorterDuff.Mode.SRC_IN;
}
drawable.mutate().setColorFilter(AppCompatDrawableManager.getPorterDuffColorFilter(colorForState, mode));
}
}
public void setBackgroundDrawable(Drawable drawable) {
Log.i(LOG_TAG, "Setting a custom background is not supported.");
}
public void setBackgroundResource(int i) {
Log.i(LOG_TAG, "Setting a custom background is not supported.");
}
public void setBackgroundColor(int i) {
Log.i(LOG_TAG, "Setting a custom background is not supported.");
}
public void setImageResource(int i) {
this.imageHelper.setImageResource(i);
onApplySupportImageTint();
}
public void setImageDrawable(Drawable drawable) {
if (getDrawable() != drawable) {
super.setImageDrawable(drawable);
getImpl().updateImageMatrixScale();
if (this.imageTint != null) {
onApplySupportImageTint();
}
}
}
public void setShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
getImpl().setShapeAppearance(shapeAppearanceModel);
}
public ShapeAppearanceModel getShapeAppearanceModel() {
return (ShapeAppearanceModel) Preconditions.checkNotNull(getImpl().getShapeAppearance());
}
public boolean shouldEnsureMinTouchTargetSize() {
return getImpl().getEnsureMinTouchTargetSize();
}
public void setEnsureMinTouchTargetSize(boolean z) {
if (z != getImpl().getEnsureMinTouchTargetSize()) {
getImpl().setEnsureMinTouchTargetSize(z);
requestLayout();
}
}
public void setVisibility(int i) {
super.setVisibility(i);
}
public void show() {
show((OnVisibilityChangedListener) null);
}
public void show(OnVisibilityChangedListener onVisibilityChangedListener) {
show(onVisibilityChangedListener, true);
}
/* access modifiers changed from: package-private */
public void show(OnVisibilityChangedListener onVisibilityChangedListener, boolean z) {
getImpl().show(wrapOnVisibilityChangedListener(onVisibilityChangedListener), z);
}
public void addOnShowAnimationListener(Animator.AnimatorListener animatorListener) {
getImpl().addOnShowAnimationListener(animatorListener);
}
public void removeOnShowAnimationListener(Animator.AnimatorListener animatorListener) {
getImpl().removeOnShowAnimationListener(animatorListener);
}
public void hide() {
hide((OnVisibilityChangedListener) null);
}
public void hide(OnVisibilityChangedListener onVisibilityChangedListener) {
hide(onVisibilityChangedListener, true);
}
/* access modifiers changed from: package-private */
public void hide(OnVisibilityChangedListener onVisibilityChangedListener, boolean z) {
getImpl().hide(wrapOnVisibilityChangedListener(onVisibilityChangedListener), z);
}
public void addOnHideAnimationListener(Animator.AnimatorListener animatorListener) {
getImpl().addOnHideAnimationListener(animatorListener);
}
public void removeOnHideAnimationListener(Animator.AnimatorListener animatorListener) {
getImpl().removeOnHideAnimationListener(animatorListener);
}
public boolean setExpanded(boolean z) {
return this.expandableWidgetHelper.setExpanded(z);
}
public boolean isExpanded() {
return this.expandableWidgetHelper.isExpanded();
}
public void setExpandedComponentIdHint(int i) {
this.expandableWidgetHelper.setExpandedComponentIdHint(i);
}
public int getExpandedComponentIdHint() {
return this.expandableWidgetHelper.getExpandedComponentIdHint();
}
public void setUseCompatPadding(boolean z) {
if (this.compatPadding != z) {
this.compatPadding = z;
getImpl().onCompatShadowChanged();
}
}
public boolean getUseCompatPadding() {
return this.compatPadding;
}
public void setSize(int i) {
this.customSize = 0;
if (i != this.size) {
this.size = i;
requestLayout();
}
}
public int getSize() {
return this.size;
}
private FloatingActionButtonImpl.InternalVisibilityChangedListener wrapOnVisibilityChangedListener(final OnVisibilityChangedListener onVisibilityChangedListener) {
if (onVisibilityChangedListener == null) {
return null;
}
return new FloatingActionButtonImpl.InternalVisibilityChangedListener() {
public void onShown() {
onVisibilityChangedListener.onShown(FloatingActionButton.this);
}
public void onHidden() {
onVisibilityChangedListener.onHidden(FloatingActionButton.this);
}
};
}
public boolean isOrWillBeHidden() {
return getImpl().isOrWillBeHidden();
}
public boolean isOrWillBeShown() {
return getImpl().isOrWillBeShown();
}
public void setCustomSize(int i) {
if (i < 0) {
throw new IllegalArgumentException("Custom size must be non-negative");
} else if (i != this.customSize) {
this.customSize = i;
requestLayout();
}
}
public int getCustomSize() {
return this.customSize;
}
public void clearCustomSize() {
setCustomSize(0);
}
/* access modifiers changed from: package-private */
public int getSizeDimension() {
return getSizeDimension(this.size);
}
private int getSizeDimension(int i) {
int i2 = this.customSize;
if (i2 != 0) {
return i2;
}
Resources resources = getResources();
if (i != -1) {
if (i != 1) {
return resources.getDimensionPixelSize(R.dimen.design_fab_size_normal);
}
return resources.getDimensionPixelSize(R.dimen.design_fab_size_mini);
} else if (Math.max(resources.getConfiguration().screenWidthDp, resources.getConfiguration().screenHeightDp) < AUTO_MINI_LARGEST_SCREEN_WIDTH) {
return getSizeDimension(1);
} else {
return getSizeDimension(0);
}
}
/* access modifiers changed from: protected */
public void onAttachedToWindow() {
super.onAttachedToWindow();
getImpl().onAttachedToWindow();
}
/* access modifiers changed from: protected */
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
getImpl().onDetachedFromWindow();
}
/* access modifiers changed from: protected */
public void drawableStateChanged() {
super.drawableStateChanged();
getImpl().onDrawableStateChanged(getDrawableState());
}
public void jumpDrawablesToCurrentState() {
super.jumpDrawablesToCurrentState();
getImpl().jumpDrawableToCurrentState();
}
/* access modifiers changed from: protected */
public Parcelable onSaveInstanceState() {
Parcelable onSaveInstanceState = super.onSaveInstanceState();
if (onSaveInstanceState == null) {
onSaveInstanceState = new Bundle();
}
ExtendableSavedState extendableSavedState = new ExtendableSavedState(onSaveInstanceState);
extendableSavedState.extendableStates.put(EXPANDABLE_WIDGET_HELPER_KEY, this.expandableWidgetHelper.onSaveInstanceState());
return extendableSavedState;
}
/* access modifiers changed from: protected */
public void onRestoreInstanceState(Parcelable parcelable) {
if (!(parcelable instanceof ExtendableSavedState)) {
super.onRestoreInstanceState(parcelable);
return;
}
ExtendableSavedState extendableSavedState = (ExtendableSavedState) parcelable;
super.onRestoreInstanceState(extendableSavedState.getSuperState());
this.expandableWidgetHelper.onRestoreInstanceState((Bundle) Preconditions.checkNotNull(extendableSavedState.extendableStates.get(EXPANDABLE_WIDGET_HELPER_KEY)));
}
@Deprecated
public boolean getContentRect(Rect rect) {
if (!ViewCompat.isLaidOut(this)) {
return false;
}
rect.set(0, 0, getWidth(), getHeight());
offsetRectWithShadow(rect);
return true;
}
public void getMeasuredContentRect(Rect rect) {
rect.set(0, 0, getMeasuredWidth(), getMeasuredHeight());
offsetRectWithShadow(rect);
}
private void offsetRectWithShadow(Rect rect) {
rect.left += this.shadowPadding.left;
rect.top += this.shadowPadding.top;
rect.right -= this.shadowPadding.right;
rect.bottom -= this.shadowPadding.bottom;
}
public Drawable getContentBackground() {
return getImpl().getContentBackground();
}
private static int resolveAdjustedSize(int i, int i2) {
int mode = View.MeasureSpec.getMode(i2);
int size2 = View.MeasureSpec.getSize(i2);
if (mode == Integer.MIN_VALUE) {
return Math.min(i, size2);
}
if (mode == 0) {
return i;
}
if (mode == 1073741824) {
return size2;
}
throw new IllegalArgumentException();
}
public boolean onTouchEvent(MotionEvent motionEvent) {
if (motionEvent.getAction() != 0 || !getContentRect(this.touchArea) || this.touchArea.contains((int) motionEvent.getX(), (int) motionEvent.getY())) {
return super.onTouchEvent(motionEvent);
}
return false;
}
public static class Behavior extends BaseBehavior<FloatingActionButton> {
public /* bridge */ /* synthetic */ boolean getInsetDodgeRect(CoordinatorLayout coordinatorLayout, FloatingActionButton floatingActionButton, Rect rect) {
return super.getInsetDodgeRect(coordinatorLayout, floatingActionButton, rect);
}
public /* bridge */ /* synthetic */ boolean isAutoHideEnabled() {
return super.isAutoHideEnabled();
}
public /* bridge */ /* synthetic */ void onAttachedToLayoutParams(CoordinatorLayout.LayoutParams layoutParams) {
super.onAttachedToLayoutParams(layoutParams);
}
public /* bridge */ /* synthetic */ boolean onDependentViewChanged(CoordinatorLayout coordinatorLayout, FloatingActionButton floatingActionButton, View view) {
return super.onDependentViewChanged(coordinatorLayout, floatingActionButton, view);
}
public /* bridge */ /* synthetic */ boolean onLayoutChild(CoordinatorLayout coordinatorLayout, FloatingActionButton floatingActionButton, int i) {
return super.onLayoutChild(coordinatorLayout, floatingActionButton, i);
}
public /* bridge */ /* synthetic */ void setAutoHideEnabled(boolean z) {
super.setAutoHideEnabled(z);
}
public /* bridge */ /* synthetic */ void setInternalAutoHideListener(OnVisibilityChangedListener onVisibilityChangedListener) {
super.setInternalAutoHideListener(onVisibilityChangedListener);
}
public Behavior() {
}
public Behavior(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
}
protected static class BaseBehavior<T extends FloatingActionButton> extends CoordinatorLayout.Behavior<T> {
private static final boolean AUTO_HIDE_DEFAULT = true;
private boolean autoHideEnabled;
private OnVisibilityChangedListener internalAutoHideListener;
private Rect tmpRect;
public BaseBehavior() {
this.autoHideEnabled = true;
}
public BaseBehavior(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.FloatingActionButton_Behavior_Layout);
this.autoHideEnabled = obtainStyledAttributes.getBoolean(R.styleable.FloatingActionButton_Behavior_Layout_behavior_autoHide, true);
obtainStyledAttributes.recycle();
}
public void setAutoHideEnabled(boolean z) {
this.autoHideEnabled = z;
}
public boolean isAutoHideEnabled() {
return this.autoHideEnabled;
}
public void onAttachedToLayoutParams(CoordinatorLayout.LayoutParams layoutParams) {
if (layoutParams.dodgeInsetEdges == 0) {
layoutParams.dodgeInsetEdges = 80;
}
}
public boolean onDependentViewChanged(CoordinatorLayout coordinatorLayout, FloatingActionButton floatingActionButton, View view) {
if (view instanceof AppBarLayout) {
updateFabVisibilityForAppBarLayout(coordinatorLayout, (AppBarLayout) view, floatingActionButton);
return false;
} else if (!isBottomSheet(view)) {
return false;
} else {
updateFabVisibilityForBottomSheet(view, floatingActionButton);
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;
}
public void setInternalAutoHideListener(OnVisibilityChangedListener onVisibilityChangedListener) {
this.internalAutoHideListener = onVisibilityChangedListener;
}
private boolean shouldUpdateVisibility(View view, FloatingActionButton floatingActionButton) {
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) floatingActionButton.getLayoutParams();
if (this.autoHideEnabled && layoutParams.getAnchorId() == view.getId() && floatingActionButton.getUserSetVisibility() == 0) {
return true;
}
return false;
}
private boolean updateFabVisibilityForAppBarLayout(CoordinatorLayout coordinatorLayout, AppBarLayout appBarLayout, FloatingActionButton floatingActionButton) {
if (!shouldUpdateVisibility(appBarLayout, floatingActionButton)) {
return false;
}
if (this.tmpRect == null) {
this.tmpRect = new Rect();
}
Rect rect = this.tmpRect;
DescendantOffsetUtils.getDescendantRect(coordinatorLayout, appBarLayout, rect);
if (rect.bottom <= appBarLayout.getMinimumHeightForVisibleOverlappingContent()) {
floatingActionButton.hide(this.internalAutoHideListener, false);
return true;
}
floatingActionButton.show(this.internalAutoHideListener, false);
return true;
}
private boolean updateFabVisibilityForBottomSheet(View view, FloatingActionButton floatingActionButton) {
if (!shouldUpdateVisibility(view, floatingActionButton)) {
return false;
}
if (view.getTop() < (floatingActionButton.getHeight() / 2) + ((CoordinatorLayout.LayoutParams) floatingActionButton.getLayoutParams()).topMargin) {
floatingActionButton.hide(this.internalAutoHideListener, false);
return true;
}
floatingActionButton.show(this.internalAutoHideListener, false);
return true;
}
public boolean onLayoutChild(CoordinatorLayout coordinatorLayout, FloatingActionButton floatingActionButton, int i) {
List<View> dependencies = coordinatorLayout.getDependencies(floatingActionButton);
int size = dependencies.size();
for (int i2 = 0; i2 < size; i2++) {
View view = dependencies.get(i2);
if (!(view instanceof AppBarLayout)) {
if (isBottomSheet(view) && updateFabVisibilityForBottomSheet(view, floatingActionButton)) {
break;
}
} else if (updateFabVisibilityForAppBarLayout(coordinatorLayout, (AppBarLayout) view, floatingActionButton)) {
break;
}
}
coordinatorLayout.onLayoutChild(floatingActionButton, i);
offsetIfNeeded(coordinatorLayout, floatingActionButton);
return true;
}
public boolean getInsetDodgeRect(CoordinatorLayout coordinatorLayout, FloatingActionButton floatingActionButton, Rect rect) {
Rect rect2 = floatingActionButton.shadowPadding;
rect.set(floatingActionButton.getLeft() + rect2.left, floatingActionButton.getTop() + rect2.top, floatingActionButton.getRight() - rect2.right, floatingActionButton.getBottom() - rect2.bottom);
return true;
}
private void offsetIfNeeded(CoordinatorLayout coordinatorLayout, FloatingActionButton floatingActionButton) {
int i;
Rect rect = floatingActionButton.shadowPadding;
if (rect != null && rect.centerX() > 0 && rect.centerY() > 0) {
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) floatingActionButton.getLayoutParams();
int i2 = 0;
if (floatingActionButton.getRight() >= coordinatorLayout.getWidth() - layoutParams.rightMargin) {
i = rect.right;
} else {
i = floatingActionButton.getLeft() <= layoutParams.leftMargin ? -rect.left : 0;
}
if (floatingActionButton.getBottom() >= coordinatorLayout.getHeight() - layoutParams.bottomMargin) {
i2 = rect.bottom;
} else if (floatingActionButton.getTop() <= layoutParams.topMargin) {
i2 = -rect.top;
}
if (i2 != 0) {
ViewCompat.offsetTopAndBottom(floatingActionButton, i2);
}
if (i != 0) {
ViewCompat.offsetLeftAndRight(floatingActionButton, i);
}
}
}
}
public void setElevation(float f) {
super.setElevation(f);
getImpl().updateShapeElevation(f);
}
public float getCompatElevation() {
return getImpl().getElevation();
}
public void setCompatElevation(float f) {
getImpl().setElevation(f);
}
public void setCompatElevationResource(int i) {
setCompatElevation(getResources().getDimension(i));
}
public float getCompatHoveredFocusedTranslationZ() {
return getImpl().getHoveredFocusedTranslationZ();
}
public void setCompatHoveredFocusedTranslationZ(float f) {
getImpl().setHoveredFocusedTranslationZ(f);
}
public void setCompatHoveredFocusedTranslationZResource(int i) {
setCompatHoveredFocusedTranslationZ(getResources().getDimension(i));
}
public float getCompatPressedTranslationZ() {
return getImpl().getPressedTranslationZ();
}
public void setCompatPressedTranslationZ(float f) {
getImpl().setPressedTranslationZ(f);
}
public void setCompatPressedTranslationZResource(int i) {
setCompatPressedTranslationZ(getResources().getDimension(i));
}
public MotionSpec getShowMotionSpec() {
return getImpl().getShowMotionSpec();
}
public void setShowMotionSpec(MotionSpec motionSpec) {
getImpl().setShowMotionSpec(motionSpec);
}
public void setShowMotionSpecResource(int i) {
setShowMotionSpec(MotionSpec.createFromResource(getContext(), i));
}
public MotionSpec getHideMotionSpec() {
return getImpl().getHideMotionSpec();
}
public void setHideMotionSpec(MotionSpec motionSpec) {
getImpl().setHideMotionSpec(motionSpec);
}
public void setHideMotionSpecResource(int i) {
setHideMotionSpec(MotionSpec.createFromResource(getContext(), i));
}
public void addTransformationCallback(TransformationCallback<? extends FloatingActionButton> transformationCallback) {
getImpl().addTransformationCallback(new TransformationCallbackWrapper(transformationCallback));
}
public void removeTransformationCallback(TransformationCallback<? extends FloatingActionButton> transformationCallback) {
getImpl().removeTransformationCallback(new TransformationCallbackWrapper(transformationCallback));
}
class TransformationCallbackWrapper<T extends FloatingActionButton> implements FloatingActionButtonImpl.InternalTransformationCallback {
private final TransformationCallback<T> listener;
TransformationCallbackWrapper(TransformationCallback<T> transformationCallback) {
this.listener = transformationCallback;
}
public void onTranslationChanged() {
this.listener.onTranslationChanged(FloatingActionButton.this);
}
public void onScaleChanged() {
this.listener.onScaleChanged(FloatingActionButton.this);
}
public boolean equals(Object obj) {
return (obj instanceof TransformationCallbackWrapper) && ((TransformationCallbackWrapper) obj).listener.equals(this.listener);
}
public int hashCode() {
return this.listener.hashCode();
}
}
public void setTranslationX(float f) {
super.setTranslationX(f);
getImpl().onTranslationChanged();
}
public void setTranslationY(float f) {
super.setTranslationY(f);
getImpl().onTranslationChanged();
}
public void setTranslationZ(float f) {
super.setTranslationZ(f);
getImpl().onTranslationChanged();
}
public void setScaleX(float f) {
super.setScaleX(f);
getImpl().onScaleChanged();
}
public void setScaleY(float f) {
super.setScaleY(f);
getImpl().onScaleChanged();
}
public void setShadowPaddingEnabled(boolean z) {
getImpl().setShadowPaddingEnabled(z);
}
private FloatingActionButtonImpl getImpl() {
if (this.impl == null) {
this.impl = createImpl();
}
return this.impl;
}
private FloatingActionButtonImpl createImpl() {
if (Build.VERSION.SDK_INT >= 21) {
return new FloatingActionButtonImplLollipop(this, new ShadowDelegateImpl());
}
return new FloatingActionButtonImpl(this, new ShadowDelegateImpl());
}
private class ShadowDelegateImpl implements ShadowViewDelegate {
ShadowDelegateImpl() {
}
public float getRadius() {
return ((float) FloatingActionButton.this.getSizeDimension()) / 2.0f;
}
public void setShadowPadding(int i, int i2, int i3, int i4) {
FloatingActionButton.this.shadowPadding.set(i, i2, i3, i4);
FloatingActionButton floatingActionButton = FloatingActionButton.this;
floatingActionButton.setPadding(i + floatingActionButton.imagePadding, i2 + FloatingActionButton.this.imagePadding, i3 + FloatingActionButton.this.imagePadding, i4 + FloatingActionButton.this.imagePadding);
}
public void setBackgroundDrawable(Drawable drawable) {
if (drawable != null) {
FloatingActionButton.super.setBackgroundDrawable(drawable);
}
}
public boolean isCompatPaddingEnabled() {
return FloatingActionButton.this.compatPadding;
}
}
}
Download file