diff options
| -rw-r--r-- | api/current.txt | 2 | ||||
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | api/test-current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/content/res/ColorStateList.java | 2 | ||||
| -rw-r--r-- | core/java/android/content/res/ComplexColor.java | 22 | ||||
| -rw-r--r-- | core/java/android/content/res/GradientColor.java | 13 | ||||
| -rw-r--r-- | core/java/android/content/res/ResourcesImpl.java | 6 |
7 files changed, 43 insertions, 6 deletions
diff --git a/api/current.txt b/api/current.txt index 9e0af763ef56..f5337725559d 100644 --- a/api/current.txt +++ b/api/current.txt @@ -10116,7 +10116,6 @@ package android.content.res { method public static deprecated android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public int describeContents(); - method public int getChangingConfigurations(); method public int getColorForState(int[], int); method public int getDefaultColor(); method public boolean isOpaque(); @@ -10128,6 +10127,7 @@ package android.content.res { public abstract class ComplexColor { ctor public ComplexColor(); + method public int getChangingConfigurations(); method public abstract int getDefaultColor(); method public boolean isStateful(); } diff --git a/api/system-current.txt b/api/system-current.txt index 00cf3573c71e..5c8d6df81212 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -10511,7 +10511,6 @@ package android.content.res { method public static deprecated android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public int describeContents(); - method public int getChangingConfigurations(); method public int getColorForState(int[], int); method public int getDefaultColor(); method public boolean isOpaque(); @@ -10523,6 +10522,7 @@ package android.content.res { public abstract class ComplexColor { ctor public ComplexColor(); + method public int getChangingConfigurations(); method public abstract int getDefaultColor(); method public boolean isStateful(); } diff --git a/api/test-current.txt b/api/test-current.txt index 9aed5e940d52..b71cf23d810d 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -10126,7 +10126,6 @@ package android.content.res { method public static deprecated android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public int describeContents(); - method public int getChangingConfigurations(); method public int getColorForState(int[], int); method public int getDefaultColor(); method public boolean isOpaque(); @@ -10138,6 +10137,7 @@ package android.content.res { public abstract class ComplexColor { ctor public ComplexColor(); + method public int getChangingConfigurations(); method public abstract int getDefaultColor(); method public boolean isStateful(); } diff --git a/core/java/android/content/res/ColorStateList.java b/core/java/android/content/res/ColorStateList.java index 5bf2e3e5aa49..fb5bfd363ce2 100644 --- a/core/java/android/content/res/ColorStateList.java +++ b/core/java/android/content/res/ColorStateList.java @@ -442,7 +442,7 @@ public class ColorStateList extends ComplexColor implements Parcelable { * @see android.content.pm.ActivityInfo */ public @Config int getChangingConfigurations() { - return mChangingConfigurations; + return super.getChangingConfigurations() | mChangingConfigurations; } private int modulateColorAlpha(int baseColor, float alphaMod) { diff --git a/core/java/android/content/res/ComplexColor.java b/core/java/android/content/res/ComplexColor.java index d96ec62749f0..b297764629cf 100644 --- a/core/java/android/content/res/ComplexColor.java +++ b/core/java/android/content/res/ComplexColor.java @@ -25,6 +25,8 @@ import android.graphics.Color; * {@link android.content.res.ColorStateList} or {@link android.content.res.GradientColor} */ public abstract class ComplexColor { + private int mChangingConfigurations; + /** * @return {@code true} if this ComplexColor changes color based on state, {@code false} * otherwise. @@ -52,4 +54,24 @@ public abstract class ComplexColor { * @hide only for resource preloading */ public abstract ComplexColor obtainForTheme(Theme t); + + /** + * @hide only for resource preloading + */ + final void setBaseChangingConfigurations(int changingConfigurations) { + mChangingConfigurations = changingConfigurations; + } + + /** + * Returns a mask of the configuration parameters for which this color + * may change, requiring that it be re-created. + * + * @return a mask of the changing configuration parameters, as defined by + * {@link android.content.pm.ActivityInfo} + * + * @see android.content.pm.ActivityInfo + */ + public int getChangingConfigurations() { + return mChangingConfigurations; + } } diff --git a/core/java/android/content/res/GradientColor.java b/core/java/android/content/res/GradientColor.java index 329134094824..f29656abe6c3 100644 --- a/core/java/android/content/res/GradientColor.java +++ b/core/java/android/content/res/GradientColor.java @@ -542,6 +542,19 @@ public class GradientColor extends ComplexColor { return clone; } + /** + * Returns a mask of the configuration parameters for which this gradient + * may change, requiring that it be re-created. + * + * @return a mask of the changing configuration parameters, as defined by + * {@link android.content.pm.ActivityInfo} + * + * @see android.content.pm.ActivityInfo + */ + public int getChangingConfigurations() { + return super.getChangingConfigurations() | mChangingConfigurations; + } + private void applyTheme(Theme t) { if (mThemeAttrs != null) { applyRootAttrsTheme(t); diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java index 90037f7b508c..a36401098e27 100644 --- a/core/java/android/content/res/ResourcesImpl.java +++ b/core/java/android/content/res/ResourcesImpl.java @@ -713,9 +713,11 @@ public class ResourcesImpl { } if (complexColor != null) { + complexColor.setBaseChangingConfigurations(value.changingConfigurations); + if (mPreloading) { - if (verifyPreloadConfig(value.changingConfigurations, 0, value.resourceId, - "color")) { + if (verifyPreloadConfig(complexColor.getChangingConfigurations(), + 0, value.resourceId, "color")) { sPreloadedComplexColors.put(key, complexColor.getConstantState()); } } else { |