ADD week 5
This commit is contained in:
		| @@ -0,0 +1,153 @@ | ||||
| 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; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user