Path: blob/master/Compiled_apk/smali/androidx/appcompat/widget/AppCompatBackgroundHelper.smali
2463 views
.class Landroidx/appcompat/widget/AppCompatBackgroundHelper; .super Ljava/lang/Object; .source "AppCompatBackgroundHelper.java" # instance fields .field private mBackgroundResId:I .field private mBackgroundTint:Landroidx/appcompat/widget/TintInfo; .field private final mDrawableManager:Landroidx/appcompat/widget/AppCompatDrawableManager; .field private mInternalBackgroundTint:Landroidx/appcompat/widget/TintInfo; .field private mTmpInfo:Landroidx/appcompat/widget/TintInfo; .field private final mView:Landroid/view/View; # direct methods .method constructor <init>(Landroid/view/View;)V .locals 1 .param p1, "view" # Landroid/view/View; .line 41 invoke-direct {p0}, Ljava/lang/Object;-><init>()V .line 35 const/4 v0, -0x1 iput v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundResId:I .line 42 iput-object p1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; .line 43 invoke-static {}, Landroidx/appcompat/widget/AppCompatDrawableManager;->get()Landroidx/appcompat/widget/AppCompatDrawableManager; move-result-object v0 iput-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mDrawableManager:Landroidx/appcompat/widget/AppCompatDrawableManager; .line 44 return-void .end method .method private applyFrameworkTintUsingColorFilter(Landroid/graphics/drawable/Drawable;)Z .locals 5 .param p1, "background" # Landroid/graphics/drawable/Drawable; .line 173 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mTmpInfo:Landroidx/appcompat/widget/TintInfo; if-nez v0, :cond_0 .line 174 new-instance v0, Landroidx/appcompat/widget/TintInfo; invoke-direct {v0}, Landroidx/appcompat/widget/TintInfo;-><init>()V iput-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mTmpInfo:Landroidx/appcompat/widget/TintInfo; .line 176 :cond_0 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mTmpInfo:Landroidx/appcompat/widget/TintInfo; .line 177 .local v0, "info":Landroidx/appcompat/widget/TintInfo; invoke-virtual {v0}, Landroidx/appcompat/widget/TintInfo;->clear()V .line 179 iget-object v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; invoke-static {v1}, Landroidx/core/view/ViewCompat;->getBackgroundTintList(Landroid/view/View;)Landroid/content/res/ColorStateList; move-result-object v1 .line 180 .local v1, "tintList":Landroid/content/res/ColorStateList; const/4 v2, 0x1 if-eqz v1, :cond_1 .line 181 iput-boolean v2, v0, Landroidx/appcompat/widget/TintInfo;->mHasTintList:Z .line 182 iput-object v1, v0, Landroidx/appcompat/widget/TintInfo;->mTintList:Landroid/content/res/ColorStateList; .line 184 :cond_1 iget-object v3, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; invoke-static {v3}, Landroidx/core/view/ViewCompat;->getBackgroundTintMode(Landroid/view/View;)Landroid/graphics/PorterDuff$Mode; move-result-object v3 .line 185 .local v3, "mode":Landroid/graphics/PorterDuff$Mode; if-eqz v3, :cond_2 .line 186 iput-boolean v2, v0, Landroidx/appcompat/widget/TintInfo;->mHasTintMode:Z .line 187 iput-object v3, v0, Landroidx/appcompat/widget/TintInfo;->mTintMode:Landroid/graphics/PorterDuff$Mode; .line 190 :cond_2 iget-boolean v4, v0, Landroidx/appcompat/widget/TintInfo;->mHasTintList:Z if-nez v4, :cond_4 iget-boolean v4, v0, Landroidx/appcompat/widget/TintInfo;->mHasTintMode:Z if-eqz v4, :cond_3 goto :goto_0 .line 195 :cond_3 const/4 v2, 0x0 return v2 .line 191 :cond_4 :goto_0 iget-object v4, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; invoke-virtual {v4}, Landroid/view/View;->getDrawableState()[I move-result-object v4 invoke-static {p1, v0, v4}, Landroidx/appcompat/widget/AppCompatDrawableManager;->tintDrawable(Landroid/graphics/drawable/Drawable;Landroidx/appcompat/widget/TintInfo;[I)V .line 192 return v2 .end method .method private shouldApplyFrameworkTintUsingColorFilter()Z .locals 4 .line 151 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I .line 152 .local v0, "sdk":I const/4 v1, 0x1 const/4 v2, 0x0 const/16 v3, 0x15 if-le v0, v3, :cond_1 .line 155 iget-object v3, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mInternalBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-eqz v3, :cond_0 goto :goto_0 :cond_0 const/4 v1, 0x0 :goto_0 return v1 .line 156 :cond_1 if-ne v0, v3, :cond_2 .line 160 return v1 .line 163 :cond_2 return v2 .end method # virtual methods .method applySupportBackgroundTint()V .locals 3 .line 118 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; invoke-virtual {v0}, Landroid/view/View;->getBackground()Landroid/graphics/drawable/Drawable; move-result-object v0 .line 119 .local v0, "background":Landroid/graphics/drawable/Drawable; if-eqz v0, :cond_2 .line 120 invoke-direct {p0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->shouldApplyFrameworkTintUsingColorFilter()Z move-result v1 if-eqz v1, :cond_0 .line 121 invoke-direct {p0, v0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->applyFrameworkTintUsingColorFilter(Landroid/graphics/drawable/Drawable;)Z move-result v1 if-eqz v1, :cond_0 .line 124 return-void .line 127 :cond_0 iget-object v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-eqz v1, :cond_1 .line 128 iget-object v2, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; .line 129 invoke-virtual {v2}, Landroid/view/View;->getDrawableState()[I move-result-object v2 .line 128 invoke-static {v0, v1, v2}, Landroidx/appcompat/widget/AppCompatDrawableManager;->tintDrawable(Landroid/graphics/drawable/Drawable;Landroidx/appcompat/widget/TintInfo;[I)V goto :goto_0 .line 130 :cond_1 iget-object v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mInternalBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-eqz v1, :cond_2 .line 131 iget-object v2, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; .line 132 invoke-virtual {v2}, Landroid/view/View;->getDrawableState()[I move-result-object v2 .line 131 invoke-static {v0, v1, v2}, Landroidx/appcompat/widget/AppCompatDrawableManager;->tintDrawable(Landroid/graphics/drawable/Drawable;Landroidx/appcompat/widget/TintInfo;[I)V .line 135 :cond_2 :goto_0 return-void .end method .method getSupportBackgroundTintList()Landroid/content/res/ColorStateList; .locals 1 .line 100 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-eqz v0, :cond_0 iget-object v0, v0, Landroidx/appcompat/widget/TintInfo;->mTintList:Landroid/content/res/ColorStateList; goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return-object v0 .end method .method getSupportBackgroundTintMode()Landroid/graphics/PorterDuff$Mode; .locals 1 .line 114 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-eqz v0, :cond_0 iget-object v0, v0, Landroidx/appcompat/widget/TintInfo;->mTintMode:Landroid/graphics/PorterDuff$Mode; goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return-object v0 .end method .method loadFromAttributes(Landroid/util/AttributeSet;I)V .locals 5 .param p1, "attrs" # Landroid/util/AttributeSet; .param p2, "defStyleAttr" # I .line 47 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; invoke-virtual {v0}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object v0 sget-object v1, Landroidx/appcompat/R$styleable;->ViewBackgroundHelper:[I const/4 v2, 0x0 invoke-static {v0, p1, v1, p2, v2}, Landroidx/appcompat/widget/TintTypedArray;->obtainStyledAttributes(Landroid/content/Context;Landroid/util/AttributeSet;[III)Landroidx/appcompat/widget/TintTypedArray; move-result-object v0 .line 50 .local v0, "a":Landroidx/appcompat/widget/TintTypedArray; :try_start_0 sget v1, Landroidx/appcompat/R$styleable;->ViewBackgroundHelper_android_background:I invoke-virtual {v0, v1}, Landroidx/appcompat/widget/TintTypedArray;->hasValue(I)Z move-result v1 const/4 v2, -0x1 if-eqz v1, :cond_0 .line 51 sget v1, Landroidx/appcompat/R$styleable;->ViewBackgroundHelper_android_background:I invoke-virtual {v0, v1, v2}, Landroidx/appcompat/widget/TintTypedArray;->getResourceId(II)I move-result v1 iput v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundResId:I .line 53 iget-object v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mDrawableManager:Landroidx/appcompat/widget/AppCompatDrawableManager; iget-object v3, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; .line 54 invoke-virtual {v3}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object v3 iget v4, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundResId:I invoke-virtual {v1, v3, v4}, Landroidx/appcompat/widget/AppCompatDrawableManager;->getTintList(Landroid/content/Context;I)Landroid/content/res/ColorStateList; move-result-object v1 .line 55 .local v1, "tint":Landroid/content/res/ColorStateList; if-eqz v1, :cond_0 .line 56 invoke-virtual {p0, v1}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->setInternalBackgroundTint(Landroid/content/res/ColorStateList;)V .line 59 .end local v1 # "tint":Landroid/content/res/ColorStateList; :cond_0 sget v1, Landroidx/appcompat/R$styleable;->ViewBackgroundHelper_backgroundTint:I invoke-virtual {v0, v1}, Landroidx/appcompat/widget/TintTypedArray;->hasValue(I)Z move-result v1 if-eqz v1, :cond_1 .line 60 iget-object v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; sget v3, Landroidx/appcompat/R$styleable;->ViewBackgroundHelper_backgroundTint:I .line 61 invoke-virtual {v0, v3}, Landroidx/appcompat/widget/TintTypedArray;->getColorStateList(I)Landroid/content/res/ColorStateList; move-result-object v3 .line 60 invoke-static {v1, v3}, Landroidx/core/view/ViewCompat;->setBackgroundTintList(Landroid/view/View;Landroid/content/res/ColorStateList;)V .line 63 :cond_1 sget v1, Landroidx/appcompat/R$styleable;->ViewBackgroundHelper_backgroundTintMode:I invoke-virtual {v0, v1}, Landroidx/appcompat/widget/TintTypedArray;->hasValue(I)Z move-result v1 if-eqz v1, :cond_2 .line 64 iget-object v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; sget v3, Landroidx/appcompat/R$styleable;->ViewBackgroundHelper_backgroundTintMode:I .line 66 invoke-virtual {v0, v3, v2}, Landroidx/appcompat/widget/TintTypedArray;->getInt(II)I move-result v2 const/4 v3, 0x0 .line 65 invoke-static {v2, v3}, Landroidx/appcompat/widget/DrawableUtils;->parseTintMode(ILandroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuff$Mode; move-result-object v2 .line 64 invoke-static {v1, v2}, Landroidx/core/view/ViewCompat;->setBackgroundTintMode(Landroid/view/View;Landroid/graphics/PorterDuff$Mode;)V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 70 :cond_2 invoke-virtual {v0}, Landroidx/appcompat/widget/TintTypedArray;->recycle()V .line 71 nop .line 72 return-void .line 70 :catchall_0 move-exception v1 invoke-virtual {v0}, Landroidx/appcompat/widget/TintTypedArray;->recycle()V throw v1 .end method .method onSetBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V .locals 1 .param p1, "background" # Landroid/graphics/drawable/Drawable; .line 84 const/4 v0, -0x1 iput v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundResId:I .line 86 const/4 v0, 0x0 invoke-virtual {p0, v0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->setInternalBackgroundTint(Landroid/content/res/ColorStateList;)V .line 87 invoke-virtual {p0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V .line 88 return-void .end method .method onSetBackgroundResource(I)V .locals 2 .param p1, "resId" # I .line 75 iput p1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundResId:I .line 77 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mDrawableManager:Landroidx/appcompat/widget/AppCompatDrawableManager; if-eqz v0, :cond_0 iget-object v1, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mView:Landroid/view/View; .line 78 invoke-virtual {v1}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object v1 invoke-virtual {v0, v1, p1}, Landroidx/appcompat/widget/AppCompatDrawableManager;->getTintList(Landroid/content/Context;I)Landroid/content/res/ColorStateList; move-result-object v0 goto :goto_0 :cond_0 const/4 v0, 0x0 .line 77 :goto_0 invoke-virtual {p0, v0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->setInternalBackgroundTint(Landroid/content/res/ColorStateList;)V .line 80 invoke-virtual {p0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V .line 81 return-void .end method .method setInternalBackgroundTint(Landroid/content/res/ColorStateList;)V .locals 2 .param p1, "tint" # Landroid/content/res/ColorStateList; .line 138 if-eqz p1, :cond_1 .line 139 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mInternalBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-nez v0, :cond_0 .line 140 new-instance v0, Landroidx/appcompat/widget/TintInfo; invoke-direct {v0}, Landroidx/appcompat/widget/TintInfo;-><init>()V iput-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mInternalBackgroundTint:Landroidx/appcompat/widget/TintInfo; .line 142 :cond_0 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mInternalBackgroundTint:Landroidx/appcompat/widget/TintInfo; iput-object p1, v0, Landroidx/appcompat/widget/TintInfo;->mTintList:Landroid/content/res/ColorStateList; .line 143 const/4 v1, 0x1 iput-boolean v1, v0, Landroidx/appcompat/widget/TintInfo;->mHasTintList:Z goto :goto_0 .line 145 :cond_1 const/4 v0, 0x0 iput-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mInternalBackgroundTint:Landroidx/appcompat/widget/TintInfo; .line 147 :goto_0 invoke-virtual {p0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V .line 148 return-void .end method .method setSupportBackgroundTintList(Landroid/content/res/ColorStateList;)V .locals 2 .param p1, "tint" # Landroid/content/res/ColorStateList; .line 91 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-nez v0, :cond_0 .line 92 new-instance v0, Landroidx/appcompat/widget/TintInfo; invoke-direct {v0}, Landroidx/appcompat/widget/TintInfo;-><init>()V iput-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; .line 94 :cond_0 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; iput-object p1, v0, Landroidx/appcompat/widget/TintInfo;->mTintList:Landroid/content/res/ColorStateList; .line 95 const/4 v1, 0x1 iput-boolean v1, v0, Landroidx/appcompat/widget/TintInfo;->mHasTintList:Z .line 96 invoke-virtual {p0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V .line 97 return-void .end method .method setSupportBackgroundTintMode(Landroid/graphics/PorterDuff$Mode;)V .locals 2 .param p1, "tintMode" # Landroid/graphics/PorterDuff$Mode; .line 104 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; if-nez v0, :cond_0 .line 105 new-instance v0, Landroidx/appcompat/widget/TintInfo; invoke-direct {v0}, Landroidx/appcompat/widget/TintInfo;-><init>()V iput-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; .line 107 :cond_0 iget-object v0, p0, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->mBackgroundTint:Landroidx/appcompat/widget/TintInfo; iput-object p1, v0, Landroidx/appcompat/widget/TintInfo;->mTintMode:Landroid/graphics/PorterDuff$Mode; .line 108 const/4 v1, 0x1 iput-boolean v1, v0, Landroidx/appcompat/widget/TintInfo;->mHasTintMode:Z .line 110 invoke-virtual {p0}, Landroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V .line 111 return-void .end method