mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-26 17:12:31 -06:00
135 lines
5.5 KiB
Java
135 lines
5.5 KiB
Java
package com.google.android.material.internal;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.Rect;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.util.AttributeSet;
|
|
import android.view.View;
|
|
import android.widget.FrameLayout;
|
|
import androidx.core.view.OnApplyWindowInsetsListener;
|
|
import androidx.core.view.ViewCompat;
|
|
import androidx.core.view.WindowInsetsCompat;
|
|
import com.google.android.material.R;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class ScrimInsetsFrameLayout extends FrameLayout {
|
|
private boolean drawBottomInsetForeground;
|
|
private boolean drawLeftInsetForeground;
|
|
private boolean drawRightInsetForeground;
|
|
private boolean drawTopInsetForeground;
|
|
Drawable insetForeground;
|
|
Rect insets;
|
|
private Rect tempRect;
|
|
|
|
protected void onInsetsChanged(WindowInsetsCompat windowInsetsCompat) {
|
|
}
|
|
|
|
public void setDrawBottomInsetForeground(boolean z) {
|
|
this.drawBottomInsetForeground = z;
|
|
}
|
|
|
|
public void setDrawLeftInsetForeground(boolean z) {
|
|
this.drawLeftInsetForeground = z;
|
|
}
|
|
|
|
public void setDrawRightInsetForeground(boolean z) {
|
|
this.drawRightInsetForeground = z;
|
|
}
|
|
|
|
public void setDrawTopInsetForeground(boolean z) {
|
|
this.drawTopInsetForeground = z;
|
|
}
|
|
|
|
public void setScrimInsetForeground(Drawable drawable) {
|
|
this.insetForeground = drawable;
|
|
}
|
|
|
|
public ScrimInsetsFrameLayout(Context context) {
|
|
this(context, null);
|
|
}
|
|
|
|
public ScrimInsetsFrameLayout(Context context, AttributeSet attributeSet) {
|
|
this(context, attributeSet, 0);
|
|
}
|
|
|
|
public ScrimInsetsFrameLayout(Context context, AttributeSet attributeSet, int i) {
|
|
super(context, attributeSet, i);
|
|
this.tempRect = new Rect();
|
|
this.drawTopInsetForeground = true;
|
|
this.drawBottomInsetForeground = true;
|
|
this.drawLeftInsetForeground = true;
|
|
this.drawRightInsetForeground = true;
|
|
TypedArray obtainStyledAttributes = ThemeEnforcement.obtainStyledAttributes(context, attributeSet, R.styleable.ScrimInsetsFrameLayout, i, R.style.Widget_Design_ScrimInsetsFrameLayout, new int[0]);
|
|
this.insetForeground = obtainStyledAttributes.getDrawable(R.styleable.ScrimInsetsFrameLayout_insetForeground);
|
|
obtainStyledAttributes.recycle();
|
|
setWillNotDraw(true);
|
|
ViewCompat.setOnApplyWindowInsetsListener(this, new OnApplyWindowInsetsListener() { // from class: com.google.android.material.internal.ScrimInsetsFrameLayout.1
|
|
@Override // androidx.core.view.OnApplyWindowInsetsListener
|
|
public WindowInsetsCompat onApplyWindowInsets(View view, WindowInsetsCompat windowInsetsCompat) {
|
|
if (ScrimInsetsFrameLayout.this.insets == null) {
|
|
ScrimInsetsFrameLayout.this.insets = new Rect();
|
|
}
|
|
ScrimInsetsFrameLayout.this.insets.set(windowInsetsCompat.getSystemWindowInsetLeft(), windowInsetsCompat.getSystemWindowInsetTop(), windowInsetsCompat.getSystemWindowInsetRight(), windowInsetsCompat.getSystemWindowInsetBottom());
|
|
ScrimInsetsFrameLayout.this.onInsetsChanged(windowInsetsCompat);
|
|
ScrimInsetsFrameLayout.this.setWillNotDraw(!windowInsetsCompat.hasSystemWindowInsets() || ScrimInsetsFrameLayout.this.insetForeground == null);
|
|
ViewCompat.postInvalidateOnAnimation(ScrimInsetsFrameLayout.this);
|
|
return windowInsetsCompat.consumeSystemWindowInsets();
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void draw(Canvas canvas) {
|
|
super.draw(canvas);
|
|
int width = getWidth();
|
|
int height = getHeight();
|
|
if (this.insets == null || this.insetForeground == null) {
|
|
return;
|
|
}
|
|
int save = canvas.save();
|
|
canvas.translate(getScrollX(), getScrollY());
|
|
if (this.drawTopInsetForeground) {
|
|
this.tempRect.set(0, 0, width, this.insets.top);
|
|
this.insetForeground.setBounds(this.tempRect);
|
|
this.insetForeground.draw(canvas);
|
|
}
|
|
if (this.drawBottomInsetForeground) {
|
|
this.tempRect.set(0, height - this.insets.bottom, width, height);
|
|
this.insetForeground.setBounds(this.tempRect);
|
|
this.insetForeground.draw(canvas);
|
|
}
|
|
if (this.drawLeftInsetForeground) {
|
|
this.tempRect.set(0, this.insets.top, this.insets.left, height - this.insets.bottom);
|
|
this.insetForeground.setBounds(this.tempRect);
|
|
this.insetForeground.draw(canvas);
|
|
}
|
|
if (this.drawRightInsetForeground) {
|
|
this.tempRect.set(width - this.insets.right, this.insets.top, width, height - this.insets.bottom);
|
|
this.insetForeground.setBounds(this.tempRect);
|
|
this.insetForeground.draw(canvas);
|
|
}
|
|
canvas.restoreToCount(save);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: protected */
|
|
@Override // android.view.ViewGroup, android.view.View
|
|
public void onAttachedToWindow() {
|
|
super.onAttachedToWindow();
|
|
Drawable drawable = this.insetForeground;
|
|
if (drawable != null) {
|
|
drawable.setCallback(this);
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: protected */
|
|
@Override // android.view.ViewGroup, android.view.View
|
|
public void onDetachedFromWindow() {
|
|
super.onDetachedFromWindow();
|
|
Drawable drawable = this.insetForeground;
|
|
if (drawable != null) {
|
|
drawable.setCallback(null);
|
|
}
|
|
}
|
|
}
|