summaryrefslogtreecommitdiffstats
path: root/graphics/java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-12-12 22:15:39 +0000
committerandroid-build-merger <android-build-merger@google.com>2014-12-12 22:15:39 +0000
commit5a4be5a2dae601954784455ec27ece26de0bdc8d (patch)
tree606dc9aeb13df435d52260ab0649fad128cf32f2 /graphics/java
parent0a69ae9666be130faedf5c8f72bea6c5f6227eaf (diff)
parent81612d80c5b2d40c8cf1fb03336a9b0f9249d82a (diff)
downloadframeworks_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.java5
-rw-r--r--graphics/java/android/graphics/drawable/DrawableContainer.java78
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;
}
}