diff options
| -rw-r--r-- | graphics/java/android/graphics/drawable/ClipDrawable.java | 17 | ||||
| -rw-r--r-- | graphics/java/android/graphics/drawable/DrawableWrapper.java | 13 |
2 files changed, 22 insertions, 8 deletions
diff --git a/graphics/java/android/graphics/drawable/ClipDrawable.java b/graphics/java/android/graphics/drawable/ClipDrawable.java index 2acf60250771..31fccd0880c9 100644 --- a/graphics/java/android/graphics/drawable/ClipDrawable.java +++ b/graphics/java/android/graphics/drawable/ClipDrawable.java @@ -150,6 +150,23 @@ public class ClipDrawable extends DrawableWrapper { } @Override + public int getOpacity() { + final Drawable dr = getDrawable(); + final int opacity = dr.getOpacity(); + if (opacity == PixelFormat.TRANSPARENT || dr.getLevel() == 0) { + return PixelFormat.TRANSPARENT; + } + + final int level = getLevel(); + if (level >= MAX_LEVEL) { + return dr.getOpacity(); + } + + // Some portion of non-transparent drawable is showing. + return PixelFormat.TRANSLUCENT; + } + + @Override public void draw(Canvas canvas) { final Drawable dr = getDrawable(); if (dr.getLevel() == 0) { diff --git a/graphics/java/android/graphics/drawable/DrawableWrapper.java b/graphics/java/android/graphics/drawable/DrawableWrapper.java index 58d43f927cbe..9185e1a06466 100644 --- a/graphics/java/android/graphics/drawable/DrawableWrapper.java +++ b/graphics/java/android/graphics/drawable/DrawableWrapper.java @@ -180,7 +180,8 @@ public abstract class DrawableWrapper extends Drawable implements Drawable.Callb @Override public int getChangingConfigurations() { return super.getChangingConfigurations() - | (mState != null ? mState.getChangingConfigurations() : 0); + | (mState != null ? mState.getChangingConfigurations() : 0) + | mDrawable.getChangingConfigurations(); } @Override @@ -366,15 +367,12 @@ public abstract class DrawableWrapper extends Drawable implements Drawable.Callb } /** - * Called during inflation to inflate the child element. + * Called during inflation to inflate the child element. The last valid + * child element will take precedence over any other child elements or + * explicit drawable attribute. */ void inflateChildDrawable(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme) throws XmlPullParserException, IOException { - // Drawable specified on the root element takes precedence. - if (getDrawable() != null) { - return; - } - // Seek to the first child element. Drawable dr = null; int type; @@ -383,7 +381,6 @@ public abstract class DrawableWrapper extends Drawable implements Drawable.Callb && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { if (type == XmlPullParser.START_TAG) { dr = Drawable.createFromXmlInner(r, parser, attrs, theme); - break; } } |