summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt2
-rw-r--r--api/system-current.txt2
-rw-r--r--api/test-current.txt2
-rw-r--r--core/java/android/content/res/ColorStateList.java2
-rw-r--r--core/java/android/content/res/ComplexColor.java22
-rw-r--r--core/java/android/content/res/GradientColor.java13
-rw-r--r--core/java/android/content/res/ResourcesImpl.java6
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 {