Rabbit-R1/android (non root)/java/sources/com/google/android/material/carousel/MaskableFrameLayout.java
2024-05-21 17:08:36 -04:00

174 lines
7.1 KiB
Java

package com.google.android.material.carousel;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.FrameLayout;
import androidx.core.math.MathUtils;
import com.google.android.material.animation.AnimationUtils;
import com.google.android.material.canvas.CanvasCompat;
import com.google.android.material.shape.AbsoluteCornerSize;
import com.google.android.material.shape.ClampedCornerSize;
import com.google.android.material.shape.CornerSize;
import com.google.android.material.shape.ShapeAppearanceModel;
import com.google.android.material.shape.Shapeable;
import com.google.android.material.shape.ShapeableDelegate;
/* loaded from: classes2.dex */
public class MaskableFrameLayout extends FrameLayout implements Maskable, Shapeable {
private static final int NOT_SET = -1;
private final RectF maskRect;
private float maskXPercentage;
private OnMaskChangedListener onMaskChangedListener;
private Boolean savedForceCompatClippingEnabled;
private ShapeAppearanceModel shapeAppearanceModel;
private final ShapeableDelegate shapeableDelegate;
@Override // com.google.android.material.carousel.Maskable
public RectF getMaskRectF() {
return this.maskRect;
}
@Override // com.google.android.material.carousel.Maskable
@Deprecated
public float getMaskXPercentage() {
return this.maskXPercentage;
}
@Override // com.google.android.material.shape.Shapeable
public ShapeAppearanceModel getShapeAppearanceModel() {
return this.shapeAppearanceModel;
}
@Override // com.google.android.material.carousel.Maskable
public void setOnMaskChangedListener(OnMaskChangedListener onMaskChangedListener) {
this.onMaskChangedListener = onMaskChangedListener;
}
public MaskableFrameLayout(Context context) {
this(context, null);
}
public MaskableFrameLayout(Context context, AttributeSet attributeSet) {
this(context, attributeSet, 0);
}
public MaskableFrameLayout(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
this.maskXPercentage = -1.0f;
this.maskRect = new RectF();
this.shapeableDelegate = ShapeableDelegate.create(this);
this.savedForceCompatClippingEnabled = null;
setShapeAppearanceModel(ShapeAppearanceModel.builder(context, attributeSet, i, 0, 0).build());
}
@Override // android.view.View
protected void onSizeChanged(int i, int i2, int i3, int i4) {
super.onSizeChanged(i, i2, i3, i4);
if (this.maskXPercentage != -1.0f) {
updateMaskRectForMaskXPercentage();
}
}
@Override // android.view.View
public void getFocusedRect(Rect rect) {
rect.set((int) this.maskRect.left, (int) this.maskRect.top, (int) this.maskRect.right, (int) this.maskRect.bottom);
}
@Override // android.view.ViewGroup, android.view.View
protected void onAttachedToWindow() {
super.onAttachedToWindow();
Boolean bool = this.savedForceCompatClippingEnabled;
if (bool != null) {
this.shapeableDelegate.setForceCompatClippingEnabled(this, bool.booleanValue());
}
}
@Override // android.view.ViewGroup, android.view.View
protected void onDetachedFromWindow() {
this.savedForceCompatClippingEnabled = Boolean.valueOf(this.shapeableDelegate.isForceCompatClippingEnabled());
this.shapeableDelegate.setForceCompatClippingEnabled(this, true);
super.onDetachedFromWindow();
}
@Override // com.google.android.material.shape.Shapeable
public void setShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
ShapeAppearanceModel withTransformedCornerSizes = shapeAppearanceModel.withTransformedCornerSizes(new ShapeAppearanceModel.CornerSizeUnaryOperator() { // from class: com.google.android.material.carousel.MaskableFrameLayout$$ExternalSyntheticLambda1
@Override // com.google.android.material.shape.ShapeAppearanceModel.CornerSizeUnaryOperator
public final CornerSize apply(CornerSize cornerSize) {
return MaskableFrameLayout.lambda$setShapeAppearanceModel$0(cornerSize);
}
});
this.shapeAppearanceModel = withTransformedCornerSizes;
this.shapeableDelegate.onShapeAppearanceChanged(this, withTransformedCornerSizes);
}
/* JADX INFO: Access modifiers changed from: package-private */
public static /* synthetic */ CornerSize lambda$setShapeAppearanceModel$0(CornerSize cornerSize) {
return cornerSize instanceof AbsoluteCornerSize ? ClampedCornerSize.createFromCornerSize((AbsoluteCornerSize) cornerSize) : cornerSize;
}
@Override // com.google.android.material.carousel.Maskable
@Deprecated
public void setMaskXPercentage(float f) {
float clamp = MathUtils.clamp(f, 0.0f, 1.0f);
if (this.maskXPercentage != clamp) {
this.maskXPercentage = clamp;
updateMaskRectForMaskXPercentage();
}
}
private void updateMaskRectForMaskXPercentage() {
if (this.maskXPercentage != -1.0f) {
float lerp = AnimationUtils.lerp(0.0f, getWidth() / 2.0f, 0.0f, 1.0f, this.maskXPercentage);
setMaskRectF(new RectF(lerp, 0.0f, getWidth() - lerp, getHeight()));
}
}
@Override // com.google.android.material.carousel.Maskable
public void setMaskRectF(RectF rectF) {
this.maskRect.set(rectF);
onMaskChanged();
}
private void onMaskChanged() {
this.shapeableDelegate.onMaskChanged(this, this.maskRect);
OnMaskChangedListener onMaskChangedListener = this.onMaskChangedListener;
if (onMaskChangedListener != null) {
onMaskChangedListener.onMaskChanged(this.maskRect);
}
}
public void setForceCompatClipping(boolean z) {
this.shapeableDelegate.setForceCompatClippingEnabled(this, z);
}
@Override // android.view.View
public boolean onTouchEvent(MotionEvent motionEvent) {
if (!this.maskRect.isEmpty() && motionEvent.getAction() == 0) {
if (!this.maskRect.contains(motionEvent.getX(), motionEvent.getY())) {
return false;
}
}
return super.onTouchEvent(motionEvent);
}
@Override // android.view.ViewGroup, android.view.View
protected void dispatchDraw(Canvas canvas) {
this.shapeableDelegate.maybeClip(canvas, new CanvasCompat.CanvasOperation() { // from class: com.google.android.material.carousel.MaskableFrameLayout$$ExternalSyntheticLambda0
@Override // com.google.android.material.canvas.CanvasCompat.CanvasOperation
public final void run(Canvas canvas2) {
MaskableFrameLayout.this.m5486x418c47c0(canvas2);
}
});
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: lambda$dispatchDraw$1$com-google-android-material-carousel-MaskableFrameLayout, reason: not valid java name */
public /* synthetic */ void m5486x418c47c0(Canvas canvas) {
super.dispatchDraw(canvas);
}
}