1091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes/* 2091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * Copyright (C) 2015 The Android Open Source Project 3091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * 4091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 5091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * you may not use this file except in compliance with the License. 6091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * You may obtain a copy of the License at 7091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * 8091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * http://www.apache.org/licenses/LICENSE-2.0 9091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * 10091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * Unless required by applicable law or agreed to in writing, software 11091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * distributed under the License is distributed on an "AS IS" BASIS, 12091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * See the License for the specific language governing permissions and 14091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * limitations under the License. 15091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes */ 16091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 17091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banespackage android.support.v7.widget; 18091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 19091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesimport android.content.res.ColorStateList; 20091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesimport android.graphics.PorterDuff; 21091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesimport android.graphics.drawable.Drawable; 22483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banesimport android.os.Build; 23483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banesimport android.support.annotation.NonNull; 24091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesimport android.support.v4.view.ViewCompat; 25091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesimport android.support.v7.appcompat.R; 26091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesimport android.util.AttributeSet; 27091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesimport android.view.View; 28091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 29091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banesclass AppCompatBackgroundHelper { 30091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 31091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes private final View mView; 327e4e8b664820f773bc96e37ee1d2bbf500d64e69Chris Banes private final AppCompatDrawableManager mDrawableManager; 33091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 34c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes private int mBackgroundResId = -1; 35c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes 36c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes private BackgroundTintInfo mInternalBackgroundTint; 37c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes private BackgroundTintInfo mBackgroundTint; 38c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes private BackgroundTintInfo mTmpInfo; 39091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 404c99f0e29b0926d8e5de44b7e3980d47f052f04cChris Banes AppCompatBackgroundHelper(View view) { 41091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mView = view; 424c99f0e29b0926d8e5de44b7e3980d47f052f04cChris Banes mDrawableManager = AppCompatDrawableManager.get(); 43091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 44091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 45091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes void loadFromAttributes(AttributeSet attrs, int defStyleAttr) { 469d5f84f33353a42e837c6b465412d1a6f2fc6eaaChris Banes TintTypedArray a = TintTypedArray.obtainStyledAttributes(mView.getContext(), attrs, 47091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes R.styleable.ViewBackgroundHelper, defStyleAttr, 0); 48091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes try { 49091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (a.hasValue(R.styleable.ViewBackgroundHelper_android_background)) { 50c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundResId = a.getResourceId( 51c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes R.styleable.ViewBackgroundHelper_android_background, -1); 52c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes ColorStateList tint = mDrawableManager 53c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes .getTintList(mView.getContext(), mBackgroundResId); 54091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (tint != null) { 55091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes setInternalBackgroundTint(tint); 56091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 57091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 58091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (a.hasValue(R.styleable.ViewBackgroundHelper_backgroundTint)) { 59091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes ViewCompat.setBackgroundTintList(mView, 60091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes a.getColorStateList(R.styleable.ViewBackgroundHelper_backgroundTint)); 61091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 62091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (a.hasValue(R.styleable.ViewBackgroundHelper_backgroundTintMode)) { 63091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes ViewCompat.setBackgroundTintMode(mView, 64091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes DrawableUtils.parseTintMode( 65091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes a.getInt(R.styleable.ViewBackgroundHelper_backgroundTintMode, -1), 66091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes null)); 67091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 68091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } finally { 69091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes a.recycle(); 70091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 71091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 72091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 73091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes void onSetBackgroundResource(int resId) { 74c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundResId = resId; 75091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes // Update the default background tint 767e4e8b664820f773bc96e37ee1d2bbf500d64e69Chris Banes setInternalBackgroundTint(mDrawableManager != null 777e4e8b664820f773bc96e37ee1d2bbf500d64e69Chris Banes ? mDrawableManager.getTintList(mView.getContext(), resId) 787e4e8b664820f773bc96e37ee1d2bbf500d64e69Chris Banes : null); 79c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes 80c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes if (updateBackgroundTint()) { 81c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes applySupportBackgroundTint(); 82c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 83091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 84091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 85091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes void onSetBackgroundDrawable(Drawable background) { 86c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundResId = -1; 87091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes // We don't know that this drawable is, so we need to clear the default background tint 88091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes setInternalBackgroundTint(null); 89c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes 90c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes if (updateBackgroundTint()) { 91c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes applySupportBackgroundTint(); 92c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 93091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 94091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 95091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes void setSupportBackgroundTintList(ColorStateList tint) { 96091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (mBackgroundTint == null) { 97c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundTint = new BackgroundTintInfo(); 98091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 99c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes 100c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // Store the original tint and null out the applicable tint. updateBackgroundTint() will 101c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // set mTintList to the tint to actually use 102c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundTint.mOriginalTintList = tint; 103c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundTint.mTintList = null; 104091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mBackgroundTint.mHasTintList = true; 105091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 106c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes if (updateBackgroundTint()) { 107c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes applySupportBackgroundTint(); 108c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 109c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 110c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes 111c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes /** 112c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes * Updates the background tint state 113c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes * @return true if the state was changed and requires an apply 114c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes */ 115c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes private boolean updateBackgroundTint() { 116c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes if (mBackgroundTint != null && mBackgroundTint.mHasTintList) { 117c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes if (mBackgroundResId >= 0) { 118c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // If we have a background resource id, lets see if we need to modify the tint 119c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // list to add any touch highlights in (for example, Button needs this) 120c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes final ColorStateList updated = mDrawableManager.getTintList( 121c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mView.getContext(), mBackgroundResId, mBackgroundTint.mOriginalTintList); 122c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes if (updated != null) { 123c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundTint.mTintList = updated; 124c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes return true; 125c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 126c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 127c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // If we reach here then we should just be using the original tint list. Check if we 128c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // need to set and apply 129c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes if (mBackgroundTint.mTintList != mBackgroundTint.mOriginalTintList) { 130c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundTint.mTintList = mBackgroundTint.mOriginalTintList; 131c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes return true; 132c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 133c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 134c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes return false; 135091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 136091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 137091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes ColorStateList getSupportBackgroundTintList() { 138091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes return mBackgroundTint != null ? mBackgroundTint.mTintList : null; 139091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 140091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 141091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes void setSupportBackgroundTintMode(PorterDuff.Mode tintMode) { 142091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (mBackgroundTint == null) { 143c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mBackgroundTint = new BackgroundTintInfo(); 144091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 145091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mBackgroundTint.mTintMode = tintMode; 146091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mBackgroundTint.mHasTintMode = true; 147091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 148091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes applySupportBackgroundTint(); 149091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 150091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 151091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes PorterDuff.Mode getSupportBackgroundTintMode() { 152091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes return mBackgroundTint != null ? mBackgroundTint.mTintMode : null; 153091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 154091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 155091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes void applySupportBackgroundTint() { 156f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes final Drawable background = mView.getBackground(); 157f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes if (background != null) { 158779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes if (Build.VERSION.SDK_INT == 21 && applyFrameworkTintUsingColorFilter(background)) { 159779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes // GradientDrawable doesn't implement setTintList on API 21, and since there is 160779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes // no nice way to unwrap DrawableContainers we have to blanket apply this 161779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes // on API 21. This needs to be called before the internal tints below so it takes 162779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes // effect on any widgets using the compat tint on API 21 (EditText) 163779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes return; 164779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes } 165779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes 166091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (mBackgroundTint != null) { 167779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes AppCompatDrawableManager.tintDrawable(background, mBackgroundTint, 168779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes mView.getDrawableState()); 169091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } else if (mInternalBackgroundTint != null) { 1707e4e8b664820f773bc96e37ee1d2bbf500d64e69Chris Banes AppCompatDrawableManager.tintDrawable(background, mInternalBackgroundTint, 171f7b73431b366b76bcf58536b7b1086489e4683b2Chris Banes mView.getDrawableState()); 172091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 173091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 174091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 175091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes 176091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes void setInternalBackgroundTint(ColorStateList tint) { 177091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (tint != null) { 178091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes if (mInternalBackgroundTint == null) { 179c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mInternalBackgroundTint = new BackgroundTintInfo(); 180091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 181091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mInternalBackgroundTint.mTintList = tint; 182091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mInternalBackgroundTint.mHasTintList = true; 183091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } else { 184091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes mInternalBackgroundTint = null; 185091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 186091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes applySupportBackgroundTint(); 187091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes } 188483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes 189779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes /** 190779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes * Applies the framework background tint to a view, but using the compat method (ColorFilter) 191779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes * 192779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes * @return true if a tint was applied 193779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes */ 194779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes private boolean applyFrameworkTintUsingColorFilter(@NonNull Drawable background) { 195483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes if (mTmpInfo == null) { 196c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mTmpInfo = new BackgroundTintInfo(); 197483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes } 198483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes final TintInfo info = mTmpInfo; 199483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes info.clear(); 200483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes 201483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes final ColorStateList tintList = ViewCompat.getBackgroundTintList(mView); 202483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes if (tintList != null) { 203483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes info.mHasTintList = true; 204483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes info.mTintList = tintList; 205483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes } 206483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes final PorterDuff.Mode mode = ViewCompat.getBackgroundTintMode(mView); 207483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes if (mode != null) { 208483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes info.mHasTintMode = true; 209483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes info.mTintMode = mode; 210483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes } 211483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes 212483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes if (info.mHasTintList || info.mHasTintMode) { 213483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes AppCompatDrawableManager.tintDrawable(background, info, mView.getDrawableState()); 214779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes return true; 215483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes } 216779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes 217779bf4e0187ccc8601fbe9d37a5c0079a534733fChris Banes return false; 218483ee34ae7ef0cac94d60cbe32a945dae4cb2b21Chris Banes } 219c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes 220c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes private static class BackgroundTintInfo extends TintInfo { 221c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // The original tint list given to the call. We need this distinction because create a 222c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes // modified for actual tinting purposes 223c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes public ColorStateList mOriginalTintList; 224c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes 2252c1bad7ecd5879bf0f29ce2ce1bc5bd67a3f4682Aurimas Liutikas BackgroundTintInfo() { 2262c1bad7ecd5879bf0f29ce2ce1bc5bd67a3f4682Aurimas Liutikas } 2272c1bad7ecd5879bf0f29ce2ce1bc5bd67a3f4682Aurimas Liutikas 228c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes @Override 229c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes void clear() { 230c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes super.clear(); 231c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes mOriginalTintList = null; 232c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 233c3fa0c344f27c192cf69c5f608d5dc7073a4dfb8Chris Banes } 234091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes} 235