SRE/02-Easy5/E5/sources/com/google/android/material/floatingactionbutton/FloatingActionButtonImplLollipop.java
2025-03-31 16:33:42 +02:00

189 lines
8.9 KiB
Java

package com.google.android.material.floatingactionbutton;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.StateListAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.RippleDrawable;
import android.os.Build;
import android.util.Property;
import android.view.View;
import androidx.core.content.ContextCompat;
import androidx.core.util.Preconditions;
import com.google.android.material.R;
import com.google.android.material.ripple.RippleUtils;
import com.google.android.material.shadow.ShadowViewDelegate;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.shape.ShapeAppearanceModel;
import java.util.ArrayList;
/* loaded from: classes.dex */
class FloatingActionButtonImplLollipop extends FloatingActionButtonImpl {
private StateListAnimator stateListAnimator;
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void jumpDrawableToCurrentState() {
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
boolean requirePreDrawListener() {
return false;
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void updateFromViewRotation() {
}
FloatingActionButtonImplLollipop(FloatingActionButton floatingActionButton, ShadowViewDelegate shadowViewDelegate) {
super(floatingActionButton, shadowViewDelegate);
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void initializeBackgroundDrawable(ColorStateList colorStateList, PorterDuff.Mode mode, ColorStateList colorStateList2, int i) {
Drawable drawable;
this.shapeDrawable = createShapeDrawable();
this.shapeDrawable.setTintList(colorStateList);
if (mode != null) {
this.shapeDrawable.setTintMode(mode);
}
this.shapeDrawable.initializeElevationOverlay(this.view.getContext());
if (i > 0) {
this.borderDrawable = createBorderDrawable(i, colorStateList);
drawable = new LayerDrawable(new Drawable[]{(Drawable) Preconditions.checkNotNull(this.borderDrawable), (Drawable) Preconditions.checkNotNull(this.shapeDrawable)});
} else {
this.borderDrawable = null;
drawable = this.shapeDrawable;
}
this.rippleDrawable = new RippleDrawable(RippleUtils.sanitizeRippleDrawableColor(colorStateList2), drawable, null);
this.contentBackground = this.rippleDrawable;
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void setRippleColor(ColorStateList colorStateList) {
if (this.rippleDrawable instanceof RippleDrawable) {
((RippleDrawable) this.rippleDrawable).setColor(RippleUtils.sanitizeRippleDrawableColor(colorStateList));
} else {
super.setRippleColor(colorStateList);
}
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void onElevationsChanged(float f, float f2, float f3) {
if (Build.VERSION.SDK_INT == 21) {
this.view.refreshDrawableState();
} else if (this.view.getStateListAnimator() == this.stateListAnimator) {
this.stateListAnimator = createDefaultStateListAnimator(f, f2, f3);
this.view.setStateListAnimator(this.stateListAnimator);
}
if (shouldAddPadding()) {
updatePadding();
}
}
private StateListAnimator createDefaultStateListAnimator(float f, float f2, float f3) {
StateListAnimator stateListAnimator = new StateListAnimator();
stateListAnimator.addState(PRESSED_ENABLED_STATE_SET, createElevationAnimator(f, f3));
stateListAnimator.addState(HOVERED_FOCUSED_ENABLED_STATE_SET, createElevationAnimator(f, f2));
stateListAnimator.addState(FOCUSED_ENABLED_STATE_SET, createElevationAnimator(f, f2));
stateListAnimator.addState(HOVERED_ENABLED_STATE_SET, createElevationAnimator(f, f2));
AnimatorSet animatorSet = new AnimatorSet();
ArrayList arrayList = new ArrayList();
arrayList.add(ObjectAnimator.ofFloat(this.view, "elevation", f).setDuration(0L));
if (Build.VERSION.SDK_INT >= 22 && Build.VERSION.SDK_INT <= 24) {
arrayList.add(ObjectAnimator.ofFloat(this.view, (Property<FloatingActionButton, Float>) View.TRANSLATION_Z, this.view.getTranslationZ()).setDuration(100L));
}
arrayList.add(ObjectAnimator.ofFloat(this.view, (Property<FloatingActionButton, Float>) View.TRANSLATION_Z, 0.0f).setDuration(100L));
animatorSet.playSequentially((Animator[]) arrayList.toArray(new Animator[0]));
animatorSet.setInterpolator(ELEVATION_ANIM_INTERPOLATOR);
stateListAnimator.addState(ENABLED_STATE_SET, animatorSet);
stateListAnimator.addState(EMPTY_STATE_SET, createElevationAnimator(0.0f, 0.0f));
return stateListAnimator;
}
private Animator createElevationAnimator(float f, float f2) {
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(ObjectAnimator.ofFloat(this.view, "elevation", f).setDuration(0L)).with(ObjectAnimator.ofFloat(this.view, (Property<FloatingActionButton, Float>) View.TRANSLATION_Z, f2).setDuration(100L));
animatorSet.setInterpolator(ELEVATION_ANIM_INTERPOLATOR);
return animatorSet;
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
public float getElevation() {
return this.view.getElevation();
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void onCompatShadowChanged() {
updatePadding();
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
boolean shouldAddPadding() {
return this.shadowViewDelegate.isCompatPaddingEnabled() || !shouldExpandBoundsForA11y();
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void onDrawableStateChanged(int[] iArr) {
if (Build.VERSION.SDK_INT == 21) {
if (this.view.isEnabled()) {
this.view.setElevation(this.elevation);
if (this.view.isPressed()) {
this.view.setTranslationZ(this.pressedTranslationZ);
return;
} else if (this.view.isFocused() || this.view.isHovered()) {
this.view.setTranslationZ(this.hoveredFocusedTranslationZ);
return;
} else {
this.view.setTranslationZ(0.0f);
return;
}
}
this.view.setElevation(0.0f);
this.view.setTranslationZ(0.0f);
}
}
BorderDrawable createBorderDrawable(int i, ColorStateList colorStateList) {
Context context = this.view.getContext();
BorderDrawable borderDrawable = new BorderDrawable((ShapeAppearanceModel) Preconditions.checkNotNull(this.shapeAppearance));
borderDrawable.setGradientColors(ContextCompat.getColor(context, R.color.design_fab_stroke_top_outer_color), ContextCompat.getColor(context, R.color.design_fab_stroke_top_inner_color), ContextCompat.getColor(context, R.color.design_fab_stroke_end_inner_color), ContextCompat.getColor(context, R.color.design_fab_stroke_end_outer_color));
borderDrawable.setBorderWidth(i);
borderDrawable.setBorderTint(colorStateList);
return borderDrawable;
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
MaterialShapeDrawable createShapeDrawable() {
return new AlwaysStatefulMaterialShapeDrawable((ShapeAppearanceModel) Preconditions.checkNotNull(this.shapeAppearance));
}
@Override // com.google.android.material.floatingactionbutton.FloatingActionButtonImpl
void getPadding(Rect rect) {
if (this.shadowViewDelegate.isCompatPaddingEnabled()) {
super.getPadding(rect);
} else if (!shouldExpandBoundsForA11y()) {
int sizeDimension = (this.minTouchTargetSize - this.view.getSizeDimension()) / 2;
rect.set(sizeDimension, sizeDimension, sizeDimension, sizeDimension);
} else {
rect.set(0, 0, 0, 0);
}
}
static class AlwaysStatefulMaterialShapeDrawable extends MaterialShapeDrawable {
@Override // com.google.android.material.shape.MaterialShapeDrawable, android.graphics.drawable.Drawable
public boolean isStateful() {
return true;
}
AlwaysStatefulMaterialShapeDrawable(ShapeAppearanceModel shapeAppearanceModel) {
super(shapeAppearanceModel);
}
}
}