summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-08-15 16:13:15 -0700
committerAlan Viverette <alanv@google.com>2014-08-15 17:15:39 -0700
commit34a14f967ab6c88829c9a36ce6e909c47b3ee398 (patch)
tree60367cc4ec76fa3688a39e73457e520df6fb48ac
parenta2897ea9d8d6eb7c1c0aace695ed835da96bb39c (diff)
downloadframeworks_base-34a14f967ab6c88829c9a36ce6e909c47b3ee398.zip
frameworks_base-34a14f967ab6c88829c9a36ce6e909c47b3ee398.tar.gz
frameworks_base-34a14f967ab6c88829c9a36ce6e909c47b3ee398.tar.bz2
Better handling of unresolved theme attributes
Also adds a (very obviously wrong) default color to RippleDrawable Change-Id: I6d29b371f4e59accbebf25eb059b1f372b9184b0
-rw-r--r--core/java/android/content/res/Resources.java8
-rw-r--r--graphics/java/android/graphics/drawable/RippleDrawable.java10
2 files changed, 14 insertions, 4 deletions
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 52d1c79..fff21aa 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -715,7 +715,13 @@ public class Resources {
* @see #getDrawable(int, Theme)
*/
public Drawable getDrawable(int id) throws NotFoundException {
- return getDrawable(id, null);
+ final Drawable d = getDrawable(id, null);
+ if (d.canApplyTheme()) {
+ Log.w(TAG, "Drawable " + getResourceName(id) + " has unresolved theme "
+ + "attributes! Consider using Resources.getDrawable(int, Theme) or "
+ + "Context.getDrawable(int).", new RuntimeException());
+ }
+ return d;
}
/**
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index ea9f732..0447e17 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -395,8 +395,12 @@ public class RippleDrawable extends LayerDrawable {
mState.mColor = color;
}
- // If we're not waiting on a theme, verify required attributes.
- if (state.mTouchThemeAttrs == null && mState.mColor == null) {
+ verifyRequiredAttributes(a);
+ }
+
+ private void verifyRequiredAttributes(TypedArray a) throws XmlPullParserException {
+ if (mState.mColor == null && (mState.mTouchThemeAttrs == null
+ || mState.mTouchThemeAttrs[R.styleable.RippleDrawable_color] == 0)) {
throw new XmlPullParserException(a.getPositionDescription() +
": <ripple> requires a valid color attribute");
}
@@ -891,7 +895,7 @@ public class RippleDrawable extends LayerDrawable {
static class RippleState extends LayerState {
int[] mTouchThemeAttrs;
- ColorStateList mColor = null;
+ ColorStateList mColor = ColorStateList.valueOf(Color.MAGENTA);
int mMaxRadius = RADIUS_AUTO;
public RippleState(RippleState orig, RippleDrawable owner, Resources res) {