244 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.cardview.widget;
 | |
| 
 | |
| import android.R;
 | |
| import android.content.Context;
 | |
| import android.content.res.ColorStateList;
 | |
| import android.content.res.TypedArray;
 | |
| import android.graphics.Color;
 | |
| import android.graphics.Rect;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.View;
 | |
| import android.widget.FrameLayout;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class CardView extends FrameLayout {
 | |
|     private static final int[] COLOR_BACKGROUND_ATTR = {R.attr.colorBackground};
 | |
|     private static final CardViewImpl IMPL;
 | |
|     private final CardViewDelegate mCardViewDelegate;
 | |
|     private boolean mCompatPadding;
 | |
|     final Rect mContentPadding;
 | |
|     private boolean mPreventCornerOverlap;
 | |
|     final Rect mShadowBounds;
 | |
|     int mUserSetMinHeight;
 | |
|     int mUserSetMinWidth;
 | |
| 
 | |
|     public boolean getPreventCornerOverlap() {
 | |
|         return this.mPreventCornerOverlap;
 | |
|     }
 | |
| 
 | |
|     public boolean getUseCompatPadding() {
 | |
|         return this.mCompatPadding;
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void setPadding(int i, int i2, int i3, int i4) {
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void setPaddingRelative(int i, int i2, int i3, int i4) {
 | |
|     }
 | |
| 
 | |
|     static {
 | |
|         CardViewApi21Impl cardViewApi21Impl = new CardViewApi21Impl();
 | |
|         IMPL = cardViewApi21Impl;
 | |
|         cardViewApi21Impl.initStatic();
 | |
|     }
 | |
| 
 | |
|     public CardView(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public CardView(Context context, AttributeSet attributeSet) {
 | |
|         this(context, attributeSet, androidx.cardview.R.attr.cardViewStyle);
 | |
|     }
 | |
| 
 | |
|     public CardView(Context context, AttributeSet attributeSet, int i) {
 | |
|         super(context, attributeSet, i);
 | |
|         int color;
 | |
|         ColorStateList valueOf;
 | |
|         Rect rect = new Rect();
 | |
|         this.mContentPadding = rect;
 | |
|         this.mShadowBounds = new Rect();
 | |
|         CardViewDelegate cardViewDelegate = new CardViewDelegate() { // from class: androidx.cardview.widget.CardView.1
 | |
|             private Drawable mCardBackground;
 | |
| 
 | |
|             @Override // androidx.cardview.widget.CardViewDelegate
 | |
|             public Drawable getCardBackground() {
 | |
|                 return this.mCardBackground;
 | |
|             }
 | |
| 
 | |
|             @Override // androidx.cardview.widget.CardViewDelegate
 | |
|             public View getCardView() {
 | |
|                 return CardView.this;
 | |
|             }
 | |
| 
 | |
|             @Override // androidx.cardview.widget.CardViewDelegate
 | |
|             public void setCardBackground(Drawable drawable) {
 | |
|                 this.mCardBackground = drawable;
 | |
|                 CardView.this.setBackgroundDrawable(drawable);
 | |
|             }
 | |
| 
 | |
|             @Override // androidx.cardview.widget.CardViewDelegate
 | |
|             public boolean getUseCompatPadding() {
 | |
|                 return CardView.this.getUseCompatPadding();
 | |
|             }
 | |
| 
 | |
|             @Override // androidx.cardview.widget.CardViewDelegate
 | |
|             public boolean getPreventCornerOverlap() {
 | |
|                 return CardView.this.getPreventCornerOverlap();
 | |
|             }
 | |
| 
 | |
|             @Override // androidx.cardview.widget.CardViewDelegate
 | |
|             public void setShadowPadding(int i2, int i3, int i4, int i5) {
 | |
|                 CardView.this.mShadowBounds.set(i2, i3, i4, i5);
 | |
|                 CardView cardView = CardView.this;
 | |
|                 CardView.super.setPadding(i2 + cardView.mContentPadding.left, i3 + CardView.this.mContentPadding.top, i4 + CardView.this.mContentPadding.right, i5 + CardView.this.mContentPadding.bottom);
 | |
|             }
 | |
| 
 | |
|             @Override // androidx.cardview.widget.CardViewDelegate
 | |
|             public void setMinWidthHeightInternal(int i2, int i3) {
 | |
|                 if (i2 > CardView.this.mUserSetMinWidth) {
 | |
|                     CardView.super.setMinimumWidth(i2);
 | |
|                 }
 | |
|                 if (i3 > CardView.this.mUserSetMinHeight) {
 | |
|                     CardView.super.setMinimumHeight(i3);
 | |
|                 }
 | |
|             }
 | |
|         };
 | |
|         this.mCardViewDelegate = cardViewDelegate;
 | |
|         TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, androidx.cardview.R.styleable.CardView, i, androidx.cardview.R.style.CardView);
 | |
|         if (obtainStyledAttributes.hasValue(androidx.cardview.R.styleable.CardView_cardBackgroundColor)) {
 | |
|             valueOf = obtainStyledAttributes.getColorStateList(androidx.cardview.R.styleable.CardView_cardBackgroundColor);
 | |
|         } else {
 | |
|             TypedArray obtainStyledAttributes2 = getContext().obtainStyledAttributes(COLOR_BACKGROUND_ATTR);
 | |
|             int color2 = obtainStyledAttributes2.getColor(0, 0);
 | |
|             obtainStyledAttributes2.recycle();
 | |
|             float[] fArr = new float[3];
 | |
|             Color.colorToHSV(color2, fArr);
 | |
|             if (fArr[2] > 0.5f) {
 | |
|                 color = getResources().getColor(androidx.cardview.R.color.cardview_light_background);
 | |
|             } else {
 | |
|                 color = getResources().getColor(androidx.cardview.R.color.cardview_dark_background);
 | |
|             }
 | |
|             valueOf = ColorStateList.valueOf(color);
 | |
|         }
 | |
|         ColorStateList colorStateList = valueOf;
 | |
|         float dimension = obtainStyledAttributes.getDimension(androidx.cardview.R.styleable.CardView_cardCornerRadius, 0.0f);
 | |
|         float dimension2 = obtainStyledAttributes.getDimension(androidx.cardview.R.styleable.CardView_cardElevation, 0.0f);
 | |
|         float dimension3 = obtainStyledAttributes.getDimension(androidx.cardview.R.styleable.CardView_cardMaxElevation, 0.0f);
 | |
|         this.mCompatPadding = obtainStyledAttributes.getBoolean(androidx.cardview.R.styleable.CardView_cardUseCompatPadding, false);
 | |
|         this.mPreventCornerOverlap = obtainStyledAttributes.getBoolean(androidx.cardview.R.styleable.CardView_cardPreventCornerOverlap, true);
 | |
|         int dimensionPixelSize = obtainStyledAttributes.getDimensionPixelSize(androidx.cardview.R.styleable.CardView_contentPadding, 0);
 | |
|         rect.left = obtainStyledAttributes.getDimensionPixelSize(androidx.cardview.R.styleable.CardView_contentPaddingLeft, dimensionPixelSize);
 | |
|         rect.top = obtainStyledAttributes.getDimensionPixelSize(androidx.cardview.R.styleable.CardView_contentPaddingTop, dimensionPixelSize);
 | |
|         rect.right = obtainStyledAttributes.getDimensionPixelSize(androidx.cardview.R.styleable.CardView_contentPaddingRight, dimensionPixelSize);
 | |
|         rect.bottom = obtainStyledAttributes.getDimensionPixelSize(androidx.cardview.R.styleable.CardView_contentPaddingBottom, dimensionPixelSize);
 | |
|         float f = dimension2 > dimension3 ? dimension2 : dimension3;
 | |
|         this.mUserSetMinWidth = obtainStyledAttributes.getDimensionPixelSize(androidx.cardview.R.styleable.CardView_android_minWidth, 0);
 | |
|         this.mUserSetMinHeight = obtainStyledAttributes.getDimensionPixelSize(androidx.cardview.R.styleable.CardView_android_minHeight, 0);
 | |
|         obtainStyledAttributes.recycle();
 | |
|         IMPL.initialize(cardViewDelegate, context, colorStateList, dimension, dimension2, f);
 | |
|     }
 | |
| 
 | |
|     public void setUseCompatPadding(boolean z) {
 | |
|         if (this.mCompatPadding != z) {
 | |
|             this.mCompatPadding = z;
 | |
|             IMPL.onCompatPaddingChanged(this.mCardViewDelegate);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setContentPadding(int i, int i2, int i3, int i4) {
 | |
|         this.mContentPadding.set(i, i2, i3, i4);
 | |
|         IMPL.updatePadding(this.mCardViewDelegate);
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.FrameLayout, android.view.View
 | |
|     protected void onMeasure(int i, int i2) {
 | |
|         if (!(IMPL instanceof CardViewApi21Impl)) {
 | |
|             int mode = View.MeasureSpec.getMode(i);
 | |
|             if (mode == Integer.MIN_VALUE || mode == 1073741824) {
 | |
|                 i = View.MeasureSpec.makeMeasureSpec(Math.max((int) Math.ceil(r0.getMinWidth(this.mCardViewDelegate)), View.MeasureSpec.getSize(i)), mode);
 | |
|             }
 | |
|             int mode2 = View.MeasureSpec.getMode(i2);
 | |
|             if (mode2 == Integer.MIN_VALUE || mode2 == 1073741824) {
 | |
|                 i2 = View.MeasureSpec.makeMeasureSpec(Math.max((int) Math.ceil(r0.getMinHeight(this.mCardViewDelegate)), View.MeasureSpec.getSize(i2)), mode2);
 | |
|             }
 | |
|             super.onMeasure(i, i2);
 | |
|             return;
 | |
|         }
 | |
|         super.onMeasure(i, i2);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void setMinimumWidth(int i) {
 | |
|         this.mUserSetMinWidth = i;
 | |
|         super.setMinimumWidth(i);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void setMinimumHeight(int i) {
 | |
|         this.mUserSetMinHeight = i;
 | |
|         super.setMinimumHeight(i);
 | |
|     }
 | |
| 
 | |
|     public void setCardBackgroundColor(int i) {
 | |
|         IMPL.setBackgroundColor(this.mCardViewDelegate, ColorStateList.valueOf(i));
 | |
|     }
 | |
| 
 | |
|     public void setCardBackgroundColor(ColorStateList colorStateList) {
 | |
|         IMPL.setBackgroundColor(this.mCardViewDelegate, colorStateList);
 | |
|     }
 | |
| 
 | |
|     public ColorStateList getCardBackgroundColor() {
 | |
|         return IMPL.getBackgroundColor(this.mCardViewDelegate);
 | |
|     }
 | |
| 
 | |
|     public int getContentPaddingLeft() {
 | |
|         return this.mContentPadding.left;
 | |
|     }
 | |
| 
 | |
|     public int getContentPaddingRight() {
 | |
|         return this.mContentPadding.right;
 | |
|     }
 | |
| 
 | |
|     public int getContentPaddingTop() {
 | |
|         return this.mContentPadding.top;
 | |
|     }
 | |
| 
 | |
|     public int getContentPaddingBottom() {
 | |
|         return this.mContentPadding.bottom;
 | |
|     }
 | |
| 
 | |
|     public void setRadius(float f) {
 | |
|         IMPL.setRadius(this.mCardViewDelegate, f);
 | |
|     }
 | |
| 
 | |
|     public float getRadius() {
 | |
|         return IMPL.getRadius(this.mCardViewDelegate);
 | |
|     }
 | |
| 
 | |
|     public void setCardElevation(float f) {
 | |
|         IMPL.setElevation(this.mCardViewDelegate, f);
 | |
|     }
 | |
| 
 | |
|     public float getCardElevation() {
 | |
|         return IMPL.getElevation(this.mCardViewDelegate);
 | |
|     }
 | |
| 
 | |
|     public void setMaxCardElevation(float f) {
 | |
|         IMPL.setMaxElevation(this.mCardViewDelegate, f);
 | |
|     }
 | |
| 
 | |
|     public float getMaxCardElevation() {
 | |
|         return IMPL.getMaxElevation(this.mCardViewDelegate);
 | |
|     }
 | |
| 
 | |
|     public void setPreventCornerOverlap(boolean z) {
 | |
|         if (z != this.mPreventCornerOverlap) {
 | |
|             this.mPreventCornerOverlap = z;
 | |
|             IMPL.onPreventCornerOverlapChanged(this.mCardViewDelegate);
 | |
|         }
 | |
|     }
 | |
| }
 |