summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tenghui Zhu <ztenghui@google.com> 2016-06-30 23:12:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-06-30 23:12:39 +0000
commit486c76b5efa8824c1a9460bad13000bf7d1697a7 (patch)
treee55c43e2ea2db3ff5a9e4d7d3d22b2158d9c292d
parenta275ec269f817e483ad418a9d7065bcb71ada84c (diff)
parentab1cbc2c53f051aaafe4d43242d6acfd08cbf158 (diff)
Merge "Mutate the drawable if a valid state change happen" into nyc-dev
-rw-r--r--graphics/java/android/graphics/drawable/VectorDrawable.java9
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;