Merge "Mutate the drawable if a valid state change happen" into nyc-dev
This commit is contained in:
@@ -240,9 +240,7 @@ public class VectorDrawable extends Drawable {
|
|||||||
* constructors to set the state and initialize local properties.
|
* constructors to set the state and initialize local properties.
|
||||||
*/
|
*/
|
||||||
private VectorDrawable(@NonNull VectorDrawableState state, @Nullable Resources res) {
|
private VectorDrawable(@NonNull VectorDrawableState state, @Nullable Resources res) {
|
||||||
// Constant state sharing is disabled until we fix onStateChanged()
|
mVectorState = state;
|
||||||
// affecting the shared bitmap.
|
|
||||||
mVectorState = new VectorDrawableState(state);
|
|
||||||
updateLocalState(res);
|
updateLocalState(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,6 +386,11 @@ public class VectorDrawable extends Drawable {
|
|||||||
protected boolean onStateChange(int[] stateSet) {
|
protected boolean onStateChange(int[] stateSet) {
|
||||||
boolean changed = false;
|
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;
|
final VectorDrawableState state = mVectorState;
|
||||||
if (state.onStateChange(stateSet)) {
|
if (state.onStateChange(stateSet)) {
|
||||||
changed = true;
|
changed = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user