am 42b678b3: am fa173e0c: am d72901f0: Merge "Update drawable container constant state following clone" into lmp-mr1-dev
* commit '42b678b3d7c10d6986aea82ec72e1b36f243972a':
Update drawable container constant state following clone
diff --git a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
index 5fc40f2..4af5946 100644
--- a/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedStateListDrawable.java
@@ -651,6 +651,7 @@
}
}
+ @Override
protected void setConstantState(@NonNull DrawableContainerState state) {
super.setConstantState(state);
diff --git a/graphics/java/android/graphics/drawable/AnimationDrawable.java b/graphics/java/android/graphics/drawable/AnimationDrawable.java
index 28ada82..9eb0251 100644
--- a/graphics/java/android/graphics/drawable/AnimationDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimationDrawable.java
@@ -23,6 +23,7 @@
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
+import android.annotation.NonNull;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.Resources.Theme;
@@ -81,7 +82,7 @@
* @attr ref android.R.styleable#AnimationDrawableItem_drawable
*/
public class AnimationDrawable extends DrawableContainer implements Runnable, Animatable {
- private final AnimationState mAnimationState;
+ private AnimationState mAnimationState;
/** The current frame, may be -1 when not animating. */
private int mCurFrame = -1;
@@ -408,9 +409,17 @@
}
}
+ @Override
+ protected void setConstantState(@NonNull DrawableContainerState state) {
+ super.setConstantState(state);
+
+ if (state instanceof AnimationState) {
+ mAnimationState = (AnimationState) state;
+ }
+ }
+
private AnimationDrawable(AnimationState state, Resources res) {
- AnimationState as = new AnimationState(state, this, res);
- mAnimationState = as;
+ final AnimationState as = new AnimationState(state, this, res);
setConstantState(as);
if (state != null) {
setFrame(0, true, false);
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java
index 6d43a0c..68fd296 100644
--- a/graphics/java/android/graphics/drawable/DrawableContainer.java
+++ b/graphics/java/android/graphics/drawable/DrawableContainer.java
@@ -567,8 +567,9 @@
@Override
public Drawable mutate() {
if (!mMutated && super.mutate() == this) {
- mDrawableContainerState = cloneConstantState();
- mDrawableContainerState.mutate();
+ final DrawableContainerState clone = cloneConstantState();
+ clone.mutate();
+ setConstantState(clone);
mMutated = true;
}
return this;
diff --git a/graphics/java/android/graphics/drawable/LevelListDrawable.java b/graphics/java/android/graphics/drawable/LevelListDrawable.java
index dc41216..b01c643 100644
--- a/graphics/java/android/graphics/drawable/LevelListDrawable.java
+++ b/graphics/java/android/graphics/drawable/LevelListDrawable.java
@@ -21,6 +21,7 @@
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
+import android.annotation.NonNull;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.Resources.Theme;
@@ -57,7 +58,7 @@
* @attr ref android.R.styleable#LevelListDrawableItem_drawable
*/
public class LevelListDrawable extends DrawableContainer {
- private final LevelListState mLevelListState;
+ private LevelListState mLevelListState;
private boolean mMutated;
public LevelListDrawable() {
@@ -227,9 +228,17 @@
}
}
+ @Override
+ protected void setConstantState(@NonNull DrawableContainerState state) {
+ super.setConstantState(state);
+
+ if (state instanceof LevelListState) {
+ mLevelListState = (LevelListState) state;
+ }
+ }
+
private LevelListDrawable(LevelListState state, Resources res) {
- LevelListState as = new LevelListState(state, this, res);
- mLevelListState = as;
+ final LevelListState as = new LevelListState(state, this, res);
setConstantState(as);
onLevelChange(getLevel());
}