134 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			5.4 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: classes.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);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     protected void onAttachedToWindow() {
 | |
|         super.onAttachedToWindow();
 | |
|         Drawable drawable = this.insetForeground;
 | |
|         if (drawable != null) {
 | |
|             drawable.setCallback(this);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup, android.view.View
 | |
|     protected void onDetachedFromWindow() {
 | |
|         super.onDetachedFromWindow();
 | |
|         Drawable drawable = this.insetForeground;
 | |
|         if (drawable != null) {
 | |
|             drawable.setCallback(null);
 | |
|         }
 | |
|     }
 | |
| }
 |