mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
376 lines
17 KiB
Java
376 lines
17 KiB
Java
package com.google.android.material.button;
|
|
|
|
import android.content.res.ColorStateList;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.PorterDuff;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.graphics.drawable.InsetDrawable;
|
|
import android.graphics.drawable.LayerDrawable;
|
|
import android.graphics.drawable.RippleDrawable;
|
|
import androidx.core.graphics.drawable.DrawableCompat;
|
|
import androidx.core.view.ViewCompat;
|
|
import com.google.android.material.R;
|
|
import com.google.android.material.color.MaterialColors;
|
|
import com.google.android.material.internal.ViewUtils;
|
|
import com.google.android.material.resources.MaterialResources;
|
|
import com.google.android.material.ripple.RippleDrawableCompat;
|
|
import com.google.android.material.ripple.RippleUtils;
|
|
import com.google.android.material.shape.MaterialShapeDrawable;
|
|
import com.google.android.material.shape.ShapeAppearanceModel;
|
|
import com.google.android.material.shape.Shapeable;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes2.dex */
|
|
public class MaterialButtonHelper {
|
|
private ColorStateList backgroundTint;
|
|
private PorterDuff.Mode backgroundTintMode;
|
|
private boolean checkable;
|
|
private int cornerRadius;
|
|
private int elevation;
|
|
private int insetBottom;
|
|
private int insetLeft;
|
|
private int insetRight;
|
|
private int insetTop;
|
|
private Drawable maskDrawable;
|
|
private final MaterialButton materialButton;
|
|
private ColorStateList rippleColor;
|
|
private LayerDrawable rippleDrawable;
|
|
private ShapeAppearanceModel shapeAppearanceModel;
|
|
private ColorStateList strokeColor;
|
|
private int strokeWidth;
|
|
private static final boolean IS_MIN_LOLLIPOP = true;
|
|
private static final boolean IS_LOLLIPOP = false;
|
|
private boolean shouldDrawSurfaceColorStroke = false;
|
|
private boolean backgroundOverwritten = false;
|
|
private boolean cornerRadiusSet = false;
|
|
private boolean toggleCheckedStateOnClick = true;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public int getCornerRadius() {
|
|
return this.cornerRadius;
|
|
}
|
|
|
|
public int getInsetBottom() {
|
|
return this.insetBottom;
|
|
}
|
|
|
|
public int getInsetTop() {
|
|
return this.insetTop;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public ColorStateList getRippleColor() {
|
|
return this.rippleColor;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public ShapeAppearanceModel getShapeAppearanceModel() {
|
|
return this.shapeAppearanceModel;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public ColorStateList getStrokeColor() {
|
|
return this.strokeColor;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public int getStrokeWidth() {
|
|
return this.strokeWidth;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public ColorStateList getSupportBackgroundTintList() {
|
|
return this.backgroundTint;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public PorterDuff.Mode getSupportBackgroundTintMode() {
|
|
return this.backgroundTintMode;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public boolean isBackgroundOverwritten() {
|
|
return this.backgroundOverwritten;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public boolean isCheckable() {
|
|
return this.checkable;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public boolean isToggleCheckedStateOnClick() {
|
|
return this.toggleCheckedStateOnClick;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setCheckable(boolean z) {
|
|
this.checkable = z;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setToggleCheckedStateOnClick(boolean z) {
|
|
this.toggleCheckedStateOnClick = z;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public MaterialButtonHelper(MaterialButton materialButton, ShapeAppearanceModel shapeAppearanceModel) {
|
|
this.materialButton = materialButton;
|
|
this.shapeAppearanceModel = shapeAppearanceModel;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void loadFromAttributes(TypedArray typedArray) {
|
|
this.insetLeft = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetLeft, 0);
|
|
this.insetRight = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetRight, 0);
|
|
this.insetTop = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetTop, 0);
|
|
this.insetBottom = typedArray.getDimensionPixelOffset(R.styleable.MaterialButton_android_insetBottom, 0);
|
|
if (typedArray.hasValue(R.styleable.MaterialButton_cornerRadius)) {
|
|
int dimensionPixelSize = typedArray.getDimensionPixelSize(R.styleable.MaterialButton_cornerRadius, -1);
|
|
this.cornerRadius = dimensionPixelSize;
|
|
setShapeAppearanceModel(this.shapeAppearanceModel.withCornerSize(dimensionPixelSize));
|
|
this.cornerRadiusSet = true;
|
|
}
|
|
this.strokeWidth = typedArray.getDimensionPixelSize(R.styleable.MaterialButton_strokeWidth, 0);
|
|
this.backgroundTintMode = ViewUtils.parseTintMode(typedArray.getInt(R.styleable.MaterialButton_backgroundTintMode, -1), PorterDuff.Mode.SRC_IN);
|
|
this.backgroundTint = MaterialResources.getColorStateList(this.materialButton.getContext(), typedArray, R.styleable.MaterialButton_backgroundTint);
|
|
this.strokeColor = MaterialResources.getColorStateList(this.materialButton.getContext(), typedArray, R.styleable.MaterialButton_strokeColor);
|
|
this.rippleColor = MaterialResources.getColorStateList(this.materialButton.getContext(), typedArray, R.styleable.MaterialButton_rippleColor);
|
|
this.checkable = typedArray.getBoolean(R.styleable.MaterialButton_android_checkable, false);
|
|
this.elevation = typedArray.getDimensionPixelSize(R.styleable.MaterialButton_elevation, 0);
|
|
this.toggleCheckedStateOnClick = typedArray.getBoolean(R.styleable.MaterialButton_toggleCheckedStateOnClick, true);
|
|
int paddingStart = ViewCompat.getPaddingStart(this.materialButton);
|
|
int paddingTop = this.materialButton.getPaddingTop();
|
|
int paddingEnd = ViewCompat.getPaddingEnd(this.materialButton);
|
|
int paddingBottom = this.materialButton.getPaddingBottom();
|
|
if (typedArray.hasValue(R.styleable.MaterialButton_android_background)) {
|
|
setBackgroundOverwritten();
|
|
} else {
|
|
updateBackground();
|
|
}
|
|
ViewCompat.setPaddingRelative(this.materialButton, paddingStart + this.insetLeft, paddingTop + this.insetTop, paddingEnd + this.insetRight, paddingBottom + this.insetBottom);
|
|
}
|
|
|
|
private void updateBackground() {
|
|
this.materialButton.setInternalBackground(createBackground());
|
|
MaterialShapeDrawable materialShapeDrawable = getMaterialShapeDrawable();
|
|
if (materialShapeDrawable != null) {
|
|
materialShapeDrawable.setElevation(this.elevation);
|
|
materialShapeDrawable.setState(this.materialButton.getDrawableState());
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setBackgroundOverwritten() {
|
|
this.backgroundOverwritten = true;
|
|
this.materialButton.setSupportBackgroundTintList(this.backgroundTint);
|
|
this.materialButton.setSupportBackgroundTintMode(this.backgroundTintMode);
|
|
}
|
|
|
|
private InsetDrawable wrapDrawableWithInset(Drawable drawable) {
|
|
return new InsetDrawable(drawable, this.insetLeft, this.insetTop, this.insetRight, this.insetBottom);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setSupportBackgroundTintList(ColorStateList colorStateList) {
|
|
if (this.backgroundTint != colorStateList) {
|
|
this.backgroundTint = colorStateList;
|
|
if (getMaterialShapeDrawable() != null) {
|
|
DrawableCompat.setTintList(getMaterialShapeDrawable(), this.backgroundTint);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setSupportBackgroundTintMode(PorterDuff.Mode mode) {
|
|
if (this.backgroundTintMode != mode) {
|
|
this.backgroundTintMode = mode;
|
|
if (getMaterialShapeDrawable() == null || this.backgroundTintMode == null) {
|
|
return;
|
|
}
|
|
DrawableCompat.setTintMode(getMaterialShapeDrawable(), this.backgroundTintMode);
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setShouldDrawSurfaceColorStroke(boolean z) {
|
|
this.shouldDrawSurfaceColorStroke = z;
|
|
updateStroke();
|
|
}
|
|
|
|
private Drawable createBackground() {
|
|
MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable(this.shapeAppearanceModel);
|
|
materialShapeDrawable.initializeElevationOverlay(this.materialButton.getContext());
|
|
DrawableCompat.setTintList(materialShapeDrawable, this.backgroundTint);
|
|
PorterDuff.Mode mode = this.backgroundTintMode;
|
|
if (mode != null) {
|
|
DrawableCompat.setTintMode(materialShapeDrawable, mode);
|
|
}
|
|
materialShapeDrawable.setStroke(this.strokeWidth, this.strokeColor);
|
|
MaterialShapeDrawable materialShapeDrawable2 = new MaterialShapeDrawable(this.shapeAppearanceModel);
|
|
materialShapeDrawable2.setTint(0);
|
|
materialShapeDrawable2.setStroke(this.strokeWidth, this.shouldDrawSurfaceColorStroke ? MaterialColors.getColor(this.materialButton, R.attr.colorSurface) : 0);
|
|
if (IS_MIN_LOLLIPOP) {
|
|
MaterialShapeDrawable materialShapeDrawable3 = new MaterialShapeDrawable(this.shapeAppearanceModel);
|
|
this.maskDrawable = materialShapeDrawable3;
|
|
DrawableCompat.setTint(materialShapeDrawable3, -1);
|
|
RippleDrawable rippleDrawable = new RippleDrawable(RippleUtils.sanitizeRippleDrawableColor(this.rippleColor), wrapDrawableWithInset(new LayerDrawable(new Drawable[]{materialShapeDrawable2, materialShapeDrawable})), this.maskDrawable);
|
|
this.rippleDrawable = rippleDrawable;
|
|
return rippleDrawable;
|
|
}
|
|
RippleDrawableCompat rippleDrawableCompat = new RippleDrawableCompat(this.shapeAppearanceModel);
|
|
this.maskDrawable = rippleDrawableCompat;
|
|
DrawableCompat.setTintList(rippleDrawableCompat, RippleUtils.sanitizeRippleDrawableColor(this.rippleColor));
|
|
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{materialShapeDrawable2, materialShapeDrawable, this.maskDrawable});
|
|
this.rippleDrawable = layerDrawable;
|
|
return wrapDrawableWithInset(layerDrawable);
|
|
}
|
|
|
|
void updateMaskBounds(int i, int i2) {
|
|
Drawable drawable = this.maskDrawable;
|
|
if (drawable != null) {
|
|
drawable.setBounds(this.insetLeft, this.insetTop, i2 - this.insetRight, i - this.insetBottom);
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setBackgroundColor(int i) {
|
|
if (getMaterialShapeDrawable() != null) {
|
|
getMaterialShapeDrawable().setTint(i);
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setRippleColor(ColorStateList colorStateList) {
|
|
if (this.rippleColor != colorStateList) {
|
|
this.rippleColor = colorStateList;
|
|
boolean z = IS_MIN_LOLLIPOP;
|
|
if (z && (this.materialButton.getBackground() instanceof RippleDrawable)) {
|
|
((RippleDrawable) this.materialButton.getBackground()).setColor(RippleUtils.sanitizeRippleDrawableColor(colorStateList));
|
|
} else {
|
|
if (z || !(this.materialButton.getBackground() instanceof RippleDrawableCompat)) {
|
|
return;
|
|
}
|
|
((RippleDrawableCompat) this.materialButton.getBackground()).setTintList(RippleUtils.sanitizeRippleDrawableColor(colorStateList));
|
|
}
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setStrokeColor(ColorStateList colorStateList) {
|
|
if (this.strokeColor != colorStateList) {
|
|
this.strokeColor = colorStateList;
|
|
updateStroke();
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setStrokeWidth(int i) {
|
|
if (this.strokeWidth != i) {
|
|
this.strokeWidth = i;
|
|
updateStroke();
|
|
}
|
|
}
|
|
|
|
private void updateStroke() {
|
|
MaterialShapeDrawable materialShapeDrawable = getMaterialShapeDrawable();
|
|
MaterialShapeDrawable surfaceColorStrokeDrawable = getSurfaceColorStrokeDrawable();
|
|
if (materialShapeDrawable != null) {
|
|
materialShapeDrawable.setStroke(this.strokeWidth, this.strokeColor);
|
|
if (surfaceColorStrokeDrawable != null) {
|
|
surfaceColorStrokeDrawable.setStroke(this.strokeWidth, this.shouldDrawSurfaceColorStroke ? MaterialColors.getColor(this.materialButton, R.attr.colorSurface) : 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setCornerRadius(int i) {
|
|
if (this.cornerRadiusSet && this.cornerRadius == i) {
|
|
return;
|
|
}
|
|
this.cornerRadius = i;
|
|
this.cornerRadiusSet = true;
|
|
setShapeAppearanceModel(this.shapeAppearanceModel.withCornerSize(i));
|
|
}
|
|
|
|
private MaterialShapeDrawable getMaterialShapeDrawable(boolean z) {
|
|
LayerDrawable layerDrawable = this.rippleDrawable;
|
|
if (layerDrawable == null || layerDrawable.getNumberOfLayers() <= 0) {
|
|
return null;
|
|
}
|
|
if (IS_MIN_LOLLIPOP) {
|
|
return (MaterialShapeDrawable) ((LayerDrawable) ((InsetDrawable) this.rippleDrawable.getDrawable(0)).getDrawable()).getDrawable(!z ? 1 : 0);
|
|
}
|
|
return (MaterialShapeDrawable) this.rippleDrawable.getDrawable(!z ? 1 : 0);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public MaterialShapeDrawable getMaterialShapeDrawable() {
|
|
return getMaterialShapeDrawable(false);
|
|
}
|
|
|
|
private MaterialShapeDrawable getSurfaceColorStrokeDrawable() {
|
|
return getMaterialShapeDrawable(true);
|
|
}
|
|
|
|
private void updateButtonShape(ShapeAppearanceModel shapeAppearanceModel) {
|
|
if (IS_LOLLIPOP && !this.backgroundOverwritten) {
|
|
int paddingStart = ViewCompat.getPaddingStart(this.materialButton);
|
|
int paddingTop = this.materialButton.getPaddingTop();
|
|
int paddingEnd = ViewCompat.getPaddingEnd(this.materialButton);
|
|
int paddingBottom = this.materialButton.getPaddingBottom();
|
|
updateBackground();
|
|
ViewCompat.setPaddingRelative(this.materialButton, paddingStart, paddingTop, paddingEnd, paddingBottom);
|
|
return;
|
|
}
|
|
if (getMaterialShapeDrawable() != null) {
|
|
getMaterialShapeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
|
|
}
|
|
if (getSurfaceColorStrokeDrawable() != null) {
|
|
getSurfaceColorStrokeDrawable().setShapeAppearanceModel(shapeAppearanceModel);
|
|
}
|
|
if (getMaskDrawable() != null) {
|
|
getMaskDrawable().setShapeAppearanceModel(shapeAppearanceModel);
|
|
}
|
|
}
|
|
|
|
public Shapeable getMaskDrawable() {
|
|
LayerDrawable layerDrawable = this.rippleDrawable;
|
|
if (layerDrawable == null || layerDrawable.getNumberOfLayers() <= 1) {
|
|
return null;
|
|
}
|
|
if (this.rippleDrawable.getNumberOfLayers() > 2) {
|
|
return (Shapeable) this.rippleDrawable.getDrawable(2);
|
|
}
|
|
return (Shapeable) this.rippleDrawable.getDrawable(1);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void setShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
|
|
this.shapeAppearanceModel = shapeAppearanceModel;
|
|
updateButtonShape(shapeAppearanceModel);
|
|
}
|
|
|
|
public void setInsetBottom(int i) {
|
|
setVerticalInsets(this.insetTop, i);
|
|
}
|
|
|
|
public void setInsetTop(int i) {
|
|
setVerticalInsets(i, this.insetBottom);
|
|
}
|
|
|
|
private void setVerticalInsets(int i, int i2) {
|
|
int paddingStart = ViewCompat.getPaddingStart(this.materialButton);
|
|
int paddingTop = this.materialButton.getPaddingTop();
|
|
int paddingEnd = ViewCompat.getPaddingEnd(this.materialButton);
|
|
int paddingBottom = this.materialButton.getPaddingBottom();
|
|
int i3 = this.insetTop;
|
|
int i4 = this.insetBottom;
|
|
this.insetBottom = i2;
|
|
this.insetTop = i;
|
|
if (!this.backgroundOverwritten) {
|
|
updateBackground();
|
|
}
|
|
ViewCompat.setPaddingRelative(this.materialButton, paddingStart, (paddingTop + i) - i3, paddingEnd, (paddingBottom + i2) - i4);
|
|
}
|
|
}
|