diff options
author | Alan Viverette <alanv@google.com> | 2014-12-12 22:15:39 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2014-12-12 22:15:39 +0000 |
commit | 5a4be5a2dae601954784455ec27ece26de0bdc8d (patch) | |
tree | 606dc9aeb13df435d52260ab0649fad128cf32f2 /graphics/java | |
parent | 0a69ae9666be130faedf5c8f72bea6c5f6227eaf (diff) | |
parent | 81612d80c5b2d40c8cf1fb03336a9b0f9249d82a (diff) | |
download | frameworks_base-5a4be5a2dae601954784455ec27ece26de0bdc8d.zip frameworks_base-5a4be5a2dae601954784455ec27ece26de0bdc8d.tar.gz frameworks_base-5a4be5a2dae601954784455ec27ece26de0bdc8d.tar.bz2 |
am e260a358: am 7c3212b2: Merge "Propagate DrawableContainer state on mutate, fix ColorDrawable theming" into lmp-mr1-dev
automerge: 81612d8
* commit '81612d80c5b2d40c8cf1fb03336a9b0f9249d82a':
Propagate DrawableContainer state on mutate, fix ColorDrawable theming
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/graphics/drawable/ColorDrawable.java | 5 | ||||
-rw-r--r-- | graphics/java/android/graphics/drawable/DrawableContainer.java | 78 |
2 files changed, 53 insertions, 30 deletions
diff --git a/graphics/java/android/graphics/drawable/ColorDrawable.java b/graphics/java/android/graphics/drawable/ColorDrawable.java index 0f0c844..e3b50ea 100644 --- a/graphics/java/android/graphics/drawable/ColorDrawable.java +++ b/graphics/java/android/graphics/drawable/ColorDrawable.java @@ -252,6 +252,11 @@ public class ColorDrawable extends Drawable { } @Override + public boolean canApplyTheme() { + return mColorState.canApplyTheme() || super.canApplyTheme(); + } + + @Override public void applyTheme(Theme t) { super.applyTheme(t); diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 3fe408a..39ef10c 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -447,36 +447,10 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { mCurrDrawable = d; mCurIndex = idx; if (d != null) { - d.mutate(); if (mDrawableContainerState.mEnterFadeDuration > 0) { mEnterAnimationEnd = now + mDrawableContainerState.mEnterFadeDuration; - } else if (mHasAlpha) { - d.setAlpha(mAlpha); - } - if (mDrawableContainerState.mHasColorFilter) { - // Color filter always overrides tint. - d.setColorFilter(mDrawableContainerState.mColorFilter); - } else { - if (mDrawableContainerState.mHasTintList) { - d.setTintList(mDrawableContainerState.mTintList); - } - if (mDrawableContainerState.mHasTintMode) { - d.setTintMode(mDrawableContainerState.mTintMode); - } - } - d.setVisible(isVisible(), true); - d.setDither(mDrawableContainerState.mDither); - d.setState(getState()); - d.setLevel(getLevel()); - d.setBounds(getBounds()); - d.setLayoutDirection(getLayoutDirection()); - d.setAutoMirrored(mDrawableContainerState.mAutoMirrored); - - final Rect hotspotBounds = mHotspotBounds; - if (hotspotBounds != null) { - d.setHotspotBounds(hotspotBounds.left, hotspotBounds.top, - hotspotBounds.right, hotspotBounds.bottom); } + initializeDrawableForDisplay(d); } } else { mCurrDrawable = null; @@ -503,6 +477,45 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { return true; } + /** + * Initializes a drawable for display in this container. + * + * @param d The drawable to initialize. + */ + private void initializeDrawableForDisplay(Drawable d) { + d.mutate(); + + if (mDrawableContainerState.mEnterFadeDuration <= 0 && mHasAlpha) { + d.setAlpha(mAlpha); + } + + if (mDrawableContainerState.mHasColorFilter) { + // Color filter always overrides tint. + d.setColorFilter(mDrawableContainerState.mColorFilter); + } else { + if (mDrawableContainerState.mHasTintList) { + d.setTintList(mDrawableContainerState.mTintList); + } + if (mDrawableContainerState.mHasTintMode) { + d.setTintMode(mDrawableContainerState.mTintMode); + } + } + + d.setVisible(isVisible(), true); + d.setDither(mDrawableContainerState.mDither); + d.setState(getState()); + d.setLevel(getLevel()); + d.setBounds(getBounds()); + d.setLayoutDirection(getLayoutDirection()); + d.setAutoMirrored(mDrawableContainerState.mAutoMirrored); + + final Rect hotspotBounds = mHotspotBounds; + if (hotspotBounds != null) { + d.setHotspotBounds(hotspotBounds.left, hotspotBounds.top, + hotspotBounds.right, hotspotBounds.bottom); + } + } + void animate(boolean schedule) { mHasAlpha = true; @@ -1136,9 +1149,14 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { // The locally cached drawables may have changed. if (mCurIndex >= 0) { mCurrDrawable = state.getChild(mCurIndex); + if (mCurrDrawable != null) { + initializeDrawableForDisplay(mCurrDrawable); + } } - if (mLastIndex >= 0) { - mLastDrawable = state.getChild(mLastIndex); - } + + // Clear out the last drawable. We don't have enough information to + // propagate local state from the past. + mLastIndex = -1; + mLastDrawable = null; } } |