ADD week 5
This commit is contained in:
		| @@ -0,0 +1,173 @@ | ||||
| package androidx.appcompat.widget; | ||||
|  | ||||
| import android.content.res.ColorStateList; | ||||
| import android.graphics.PorterDuff; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.graphics.drawable.RippleDrawable; | ||||
| import android.os.Build; | ||||
| import android.util.AttributeSet; | ||||
| import android.widget.ImageView; | ||||
| import androidx.appcompat.R; | ||||
| import androidx.appcompat.content.res.AppCompatResources; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import androidx.core.widget.ImageViewCompat; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class AppCompatImageHelper { | ||||
|     private TintInfo mImageTint; | ||||
|     private TintInfo mInternalImageTint; | ||||
|     private int mLevel = 0; | ||||
|     private TintInfo mTmpInfo; | ||||
|     private final ImageView mView; | ||||
|  | ||||
|     private boolean shouldApplyFrameworkTintUsingColorFilter() { | ||||
|         int i = Build.VERSION.SDK_INT; | ||||
|         return i > 21 ? this.mInternalImageTint != null : i == 21; | ||||
|     } | ||||
|  | ||||
|     public AppCompatImageHelper(ImageView imageView) { | ||||
|         this.mView = imageView; | ||||
|     } | ||||
|  | ||||
|     public void loadFromAttributes(AttributeSet attributeSet, int i) { | ||||
|         int resourceId; | ||||
|         TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(this.mView.getContext(), attributeSet, R.styleable.AppCompatImageView, i, 0); | ||||
|         ImageView imageView = this.mView; | ||||
|         ViewCompat.saveAttributeDataForStyleable(imageView, imageView.getContext(), R.styleable.AppCompatImageView, attributeSet, obtainStyledAttributes.getWrappedTypeArray(), i, 0); | ||||
|         try { | ||||
|             Drawable drawable = this.mView.getDrawable(); | ||||
|             if (drawable == null && (resourceId = obtainStyledAttributes.getResourceId(R.styleable.AppCompatImageView_srcCompat, -1)) != -1 && (drawable = AppCompatResources.getDrawable(this.mView.getContext(), resourceId)) != null) { | ||||
|                 this.mView.setImageDrawable(drawable); | ||||
|             } | ||||
|             if (drawable != null) { | ||||
|                 DrawableUtils.fixDrawable(drawable); | ||||
|             } | ||||
|             if (obtainStyledAttributes.hasValue(R.styleable.AppCompatImageView_tint)) { | ||||
|                 ImageViewCompat.setImageTintList(this.mView, obtainStyledAttributes.getColorStateList(R.styleable.AppCompatImageView_tint)); | ||||
|             } | ||||
|             if (obtainStyledAttributes.hasValue(R.styleable.AppCompatImageView_tintMode)) { | ||||
|                 ImageViewCompat.setImageTintMode(this.mView, DrawableUtils.parseTintMode(obtainStyledAttributes.getInt(R.styleable.AppCompatImageView_tintMode, -1), null)); | ||||
|             } | ||||
|         } finally { | ||||
|             obtainStyledAttributes.recycle(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void setImageResource(int i) { | ||||
|         if (i != 0) { | ||||
|             Drawable drawable = AppCompatResources.getDrawable(this.mView.getContext(), i); | ||||
|             if (drawable != null) { | ||||
|                 DrawableUtils.fixDrawable(drawable); | ||||
|             } | ||||
|             this.mView.setImageDrawable(drawable); | ||||
|         } else { | ||||
|             this.mView.setImageDrawable(null); | ||||
|         } | ||||
|         applySupportImageTint(); | ||||
|     } | ||||
|  | ||||
|     boolean hasOverlappingRendering() { | ||||
|         return !(this.mView.getBackground() instanceof RippleDrawable); | ||||
|     } | ||||
|  | ||||
|     void setSupportImageTintList(ColorStateList colorStateList) { | ||||
|         if (this.mImageTint == null) { | ||||
|             this.mImageTint = new TintInfo(); | ||||
|         } | ||||
|         this.mImageTint.mTintList = colorStateList; | ||||
|         this.mImageTint.mHasTintList = true; | ||||
|         applySupportImageTint(); | ||||
|     } | ||||
|  | ||||
|     ColorStateList getSupportImageTintList() { | ||||
|         TintInfo tintInfo = this.mImageTint; | ||||
|         if (tintInfo != null) { | ||||
|             return tintInfo.mTintList; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     void setSupportImageTintMode(PorterDuff.Mode mode) { | ||||
|         if (this.mImageTint == null) { | ||||
|             this.mImageTint = new TintInfo(); | ||||
|         } | ||||
|         this.mImageTint.mTintMode = mode; | ||||
|         this.mImageTint.mHasTintMode = true; | ||||
|         applySupportImageTint(); | ||||
|     } | ||||
|  | ||||
|     PorterDuff.Mode getSupportImageTintMode() { | ||||
|         TintInfo tintInfo = this.mImageTint; | ||||
|         if (tintInfo != null) { | ||||
|             return tintInfo.mTintMode; | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     void applySupportImageTint() { | ||||
|         Drawable drawable = this.mView.getDrawable(); | ||||
|         if (drawable != null) { | ||||
|             DrawableUtils.fixDrawable(drawable); | ||||
|         } | ||||
|         if (drawable != null) { | ||||
|             if (shouldApplyFrameworkTintUsingColorFilter() && applyFrameworkTintUsingColorFilter(drawable)) { | ||||
|                 return; | ||||
|             } | ||||
|             TintInfo tintInfo = this.mImageTint; | ||||
|             if (tintInfo != null) { | ||||
|                 AppCompatDrawableManager.tintDrawable(drawable, tintInfo, this.mView.getDrawableState()); | ||||
|                 return; | ||||
|             } | ||||
|             TintInfo tintInfo2 = this.mInternalImageTint; | ||||
|             if (tintInfo2 != null) { | ||||
|                 AppCompatDrawableManager.tintDrawable(drawable, tintInfo2, this.mView.getDrawableState()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void setInternalImageTint(ColorStateList colorStateList) { | ||||
|         if (colorStateList != null) { | ||||
|             if (this.mInternalImageTint == null) { | ||||
|                 this.mInternalImageTint = new TintInfo(); | ||||
|             } | ||||
|             this.mInternalImageTint.mTintList = colorStateList; | ||||
|             this.mInternalImageTint.mHasTintList = true; | ||||
|         } else { | ||||
|             this.mInternalImageTint = null; | ||||
|         } | ||||
|         applySupportImageTint(); | ||||
|     } | ||||
|  | ||||
|     private boolean applyFrameworkTintUsingColorFilter(Drawable drawable) { | ||||
|         if (this.mTmpInfo == null) { | ||||
|             this.mTmpInfo = new TintInfo(); | ||||
|         } | ||||
|         TintInfo tintInfo = this.mTmpInfo; | ||||
|         tintInfo.clear(); | ||||
|         ColorStateList imageTintList = ImageViewCompat.getImageTintList(this.mView); | ||||
|         if (imageTintList != null) { | ||||
|             tintInfo.mHasTintList = true; | ||||
|             tintInfo.mTintList = imageTintList; | ||||
|         } | ||||
|         PorterDuff.Mode imageTintMode = ImageViewCompat.getImageTintMode(this.mView); | ||||
|         if (imageTintMode != null) { | ||||
|             tintInfo.mHasTintMode = true; | ||||
|             tintInfo.mTintMode = imageTintMode; | ||||
|         } | ||||
|         if (!tintInfo.mHasTintList && !tintInfo.mHasTintMode) { | ||||
|             return false; | ||||
|         } | ||||
|         AppCompatDrawableManager.tintDrawable(drawable, tintInfo, this.mView.getDrawableState()); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     void obtainLevelFromDrawable(Drawable drawable) { | ||||
|         this.mLevel = drawable.getLevel(); | ||||
|     } | ||||
|  | ||||
|     void applyImageLevel() { | ||||
|         if (this.mView.getDrawable() != null) { | ||||
|             this.mView.getDrawable().setLevel(this.mLevel); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user