diff options
| author | 2016-06-30 23:12:37 +0000 | |
|---|---|---|
| committer | 2016-06-30 23:12:39 +0000 | |
| commit | 486c76b5efa8824c1a9460bad13000bf7d1697a7 (patch) | |
| tree | e55c43e2ea2db3ff5a9e4d7d3d22b2158d9c292d | |
| parent | a275ec269f817e483ad418a9d7065bcb71ada84c (diff) | |
| parent | ab1cbc2c53f051aaafe4d43242d6acfd08cbf158 (diff) | |
Merge "Mutate the drawable if a valid state change happen" into nyc-dev
| -rw-r--r-- | graphics/java/android/graphics/drawable/VectorDrawable.java | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java index 7b8dc52bc3b4..c855c4c6d17b 100644 --- a/graphics/java/android/graphics/drawable/VectorDrawable.java +++ b/graphics/java/android/graphics/drawable/VectorDrawable.java @@ -240,9 +240,7 @@ public class VectorDrawable extends Drawable {       * constructors to set the state and initialize local properties.       */      private VectorDrawable(@NonNull VectorDrawableState state, @Nullable Resources res) { -        // Constant state sharing is disabled until we fix onStateChanged() -        // affecting the shared bitmap. -        mVectorState = new VectorDrawableState(state); +        mVectorState = state;          updateLocalState(res);      } @@ -388,6 +386,11 @@ public class VectorDrawable extends Drawable {      protected boolean onStateChange(int[] stateSet) {          boolean changed = false; +        // When the VD is stateful, we need to mutate the drawable such that we don't share the +        // cache bitmap with others. Such that the state change only affect this new cached bitmap. +        if (isStateful()) { +            mutate(); +        }          final VectorDrawableState state = mVectorState;          if (state.onStateChange(stateSet)) {              changed = true;  |