154 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.appcompat.widget;
 | |
| 
 | |
| import android.content.res.ColorStateList;
 | |
| import android.graphics.PorterDuff;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.os.Build;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.View;
 | |
| import androidx.appcompat.R;
 | |
| import androidx.core.view.ViewCompat;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class AppCompatBackgroundHelper {
 | |
|     private TintInfo mBackgroundTint;
 | |
|     private TintInfo mInternalBackgroundTint;
 | |
|     private TintInfo mTmpInfo;
 | |
|     private final View mView;
 | |
|     private int mBackgroundResId = -1;
 | |
|     private final AppCompatDrawableManager mDrawableManager = AppCompatDrawableManager.get();
 | |
| 
 | |
|     private boolean shouldApplyFrameworkTintUsingColorFilter() {
 | |
|         int i = Build.VERSION.SDK_INT;
 | |
|         return i > 21 ? this.mInternalBackgroundTint != null : i == 21;
 | |
|     }
 | |
| 
 | |
|     AppCompatBackgroundHelper(View view) {
 | |
|         this.mView = view;
 | |
|     }
 | |
| 
 | |
|     void loadFromAttributes(AttributeSet attributeSet, int i) {
 | |
|         TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(this.mView.getContext(), attributeSet, R.styleable.ViewBackgroundHelper, i, 0);
 | |
|         View view = this.mView;
 | |
|         ViewCompat.saveAttributeDataForStyleable(view, view.getContext(), R.styleable.ViewBackgroundHelper, attributeSet, obtainStyledAttributes.getWrappedTypeArray(), i, 0);
 | |
|         try {
 | |
|             if (obtainStyledAttributes.hasValue(R.styleable.ViewBackgroundHelper_android_background)) {
 | |
|                 this.mBackgroundResId = obtainStyledAttributes.getResourceId(R.styleable.ViewBackgroundHelper_android_background, -1);
 | |
|                 ColorStateList tintList = this.mDrawableManager.getTintList(this.mView.getContext(), this.mBackgroundResId);
 | |
|                 if (tintList != null) {
 | |
|                     setInternalBackgroundTint(tintList);
 | |
|                 }
 | |
|             }
 | |
|             if (obtainStyledAttributes.hasValue(R.styleable.ViewBackgroundHelper_backgroundTint)) {
 | |
|                 ViewCompat.setBackgroundTintList(this.mView, obtainStyledAttributes.getColorStateList(R.styleable.ViewBackgroundHelper_backgroundTint));
 | |
|             }
 | |
|             if (obtainStyledAttributes.hasValue(R.styleable.ViewBackgroundHelper_backgroundTintMode)) {
 | |
|                 ViewCompat.setBackgroundTintMode(this.mView, DrawableUtils.parseTintMode(obtainStyledAttributes.getInt(R.styleable.ViewBackgroundHelper_backgroundTintMode, -1), null));
 | |
|             }
 | |
|         } finally {
 | |
|             obtainStyledAttributes.recycle();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void onSetBackgroundResource(int i) {
 | |
|         this.mBackgroundResId = i;
 | |
|         AppCompatDrawableManager appCompatDrawableManager = this.mDrawableManager;
 | |
|         setInternalBackgroundTint(appCompatDrawableManager != null ? appCompatDrawableManager.getTintList(this.mView.getContext(), i) : null);
 | |
|         applySupportBackgroundTint();
 | |
|     }
 | |
| 
 | |
|     void onSetBackgroundDrawable(Drawable drawable) {
 | |
|         this.mBackgroundResId = -1;
 | |
|         setInternalBackgroundTint(null);
 | |
|         applySupportBackgroundTint();
 | |
|     }
 | |
| 
 | |
|     void setSupportBackgroundTintList(ColorStateList colorStateList) {
 | |
|         if (this.mBackgroundTint == null) {
 | |
|             this.mBackgroundTint = new TintInfo();
 | |
|         }
 | |
|         this.mBackgroundTint.mTintList = colorStateList;
 | |
|         this.mBackgroundTint.mHasTintList = true;
 | |
|         applySupportBackgroundTint();
 | |
|     }
 | |
| 
 | |
|     ColorStateList getSupportBackgroundTintList() {
 | |
|         TintInfo tintInfo = this.mBackgroundTint;
 | |
|         if (tintInfo != null) {
 | |
|             return tintInfo.mTintList;
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     void setSupportBackgroundTintMode(PorterDuff.Mode mode) {
 | |
|         if (this.mBackgroundTint == null) {
 | |
|             this.mBackgroundTint = new TintInfo();
 | |
|         }
 | |
|         this.mBackgroundTint.mTintMode = mode;
 | |
|         this.mBackgroundTint.mHasTintMode = true;
 | |
|         applySupportBackgroundTint();
 | |
|     }
 | |
| 
 | |
|     PorterDuff.Mode getSupportBackgroundTintMode() {
 | |
|         TintInfo tintInfo = this.mBackgroundTint;
 | |
|         if (tintInfo != null) {
 | |
|             return tintInfo.mTintMode;
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     void applySupportBackgroundTint() {
 | |
|         Drawable background = this.mView.getBackground();
 | |
|         if (background != null) {
 | |
|             if (shouldApplyFrameworkTintUsingColorFilter() && applyFrameworkTintUsingColorFilter(background)) {
 | |
|                 return;
 | |
|             }
 | |
|             TintInfo tintInfo = this.mBackgroundTint;
 | |
|             if (tintInfo != null) {
 | |
|                 AppCompatDrawableManager.tintDrawable(background, tintInfo, this.mView.getDrawableState());
 | |
|                 return;
 | |
|             }
 | |
|             TintInfo tintInfo2 = this.mInternalBackgroundTint;
 | |
|             if (tintInfo2 != null) {
 | |
|                 AppCompatDrawableManager.tintDrawable(background, tintInfo2, this.mView.getDrawableState());
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void setInternalBackgroundTint(ColorStateList colorStateList) {
 | |
|         if (colorStateList != null) {
 | |
|             if (this.mInternalBackgroundTint == null) {
 | |
|                 this.mInternalBackgroundTint = new TintInfo();
 | |
|             }
 | |
|             this.mInternalBackgroundTint.mTintList = colorStateList;
 | |
|             this.mInternalBackgroundTint.mHasTintList = true;
 | |
|         } else {
 | |
|             this.mInternalBackgroundTint = null;
 | |
|         }
 | |
|         applySupportBackgroundTint();
 | |
|     }
 | |
| 
 | |
|     private boolean applyFrameworkTintUsingColorFilter(Drawable drawable) {
 | |
|         if (this.mTmpInfo == null) {
 | |
|             this.mTmpInfo = new TintInfo();
 | |
|         }
 | |
|         TintInfo tintInfo = this.mTmpInfo;
 | |
|         tintInfo.clear();
 | |
|         ColorStateList backgroundTintList = ViewCompat.getBackgroundTintList(this.mView);
 | |
|         if (backgroundTintList != null) {
 | |
|             tintInfo.mHasTintList = true;
 | |
|             tintInfo.mTintList = backgroundTintList;
 | |
|         }
 | |
|         PorterDuff.Mode backgroundTintMode = ViewCompat.getBackgroundTintMode(this.mView);
 | |
|         if (backgroundTintMode != null) {
 | |
|             tintInfo.mHasTintMode = true;
 | |
|             tintInfo.mTintMode = backgroundTintMode;
 | |
|         }
 | |
|         if (!tintInfo.mHasTintList && !tintInfo.mHasTintMode) {
 | |
|             return false;
 | |
|         }
 | |
|         AppCompatDrawableManager.tintDrawable(drawable, tintInfo, this.mView.getDrawableState());
 | |
|         return true;
 | |
|     }
 | |
| }
 |