diff --git a/api/current.txt b/api/current.txt index 9431ba2db7a9b..247fe68c76968 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9442,7 +9442,6 @@ package android.graphics.drawable { ctor public ColorDrawable(); ctor public ColorDrawable(int); method public void draw(android.graphics.Canvas); - method public int getAlpha(); method public int getColor(); method public int getOpacity(); method public void setAlpha(int); @@ -9462,6 +9461,7 @@ package android.graphics.drawable { method public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException; method public abstract void draw(android.graphics.Canvas); + method public int getAlpha(); method public final android.graphics.Rect getBounds(); method public android.graphics.drawable.Drawable.Callback getCallback(); method public int getChangingConfigurations(); diff --git a/core/java/android/widget/ScrollBarDrawable.java b/core/java/android/widget/ScrollBarDrawable.java index 93a1179c8c0da..9886bc37bc0b2 100644 --- a/core/java/android/widget/ScrollBarDrawable.java +++ b/core/java/android/widget/ScrollBarDrawable.java @@ -225,6 +225,12 @@ public class ScrollBarDrawable extends Drawable { mHorizontalThumb.setAlpha(alpha); } + @Override + public int getAlpha() { + // All elements should have same alpha, just return one of them + return mVerticalThumb.getAlpha(); + } + @Override public void setColorFilter(ColorFilter cf) { if (mVerticalTrack != null) { diff --git a/core/java/com/android/internal/widget/multiwaveview/TargetDrawable.java b/core/java/com/android/internal/widget/multiwaveview/TargetDrawable.java index 30f5f2f2ddee8..16bec160c5698 100644 --- a/core/java/com/android/internal/widget/multiwaveview/TargetDrawable.java +++ b/core/java/com/android/internal/widget/multiwaveview/TargetDrawable.java @@ -46,36 +46,6 @@ public class TargetDrawable { private boolean mEnabled = true; private final int mResourceId; - /* package */ static class DrawableWithAlpha extends Drawable { - private float mAlpha = 1.0f; - private Drawable mRealDrawable; - public DrawableWithAlpha(Drawable realDrawable) { - mRealDrawable = realDrawable; - } - public void setAlpha(float alpha) { - mAlpha = alpha; - } - public float getAlpha() { - return mAlpha; - } - public void draw(Canvas canvas) { - mRealDrawable.setAlpha((int) Math.round(mAlpha * 255f)); - mRealDrawable.draw(canvas); - } - @Override - public void setAlpha(int alpha) { - mRealDrawable.setAlpha(alpha); - } - @Override - public void setColorFilter(ColorFilter cf) { - mRealDrawable.setColorFilter(cf); - } - @Override - public int getOpacity() { - return mRealDrawable.getOpacity(); - } - } - public TargetDrawable(Resources res, int resId) { mResourceId = resId; setDrawable(res, resId); diff --git a/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java b/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java index 34f90708afeec..9042ce622845e 100644 --- a/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java +++ b/graphics/java/android/graphics/drawable/AnimatedRotateDrawable.java @@ -152,6 +152,11 @@ public class AnimatedRotateDrawable extends Drawable implements Drawable.Callbac mState.mDrawable.setAlpha(alpha); } + @Override + public int getAlpha() { + return mState.mDrawable.getAlpha(); + } + @Override public void setColorFilter(ColorFilter cf) { mState.mDrawable.setColorFilter(cf); diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java index 675c4b6bceb01..41765b3023d66 100644 --- a/graphics/java/android/graphics/drawable/BitmapDrawable.java +++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java @@ -455,6 +455,11 @@ public class BitmapDrawable extends Drawable { } } + @Override + public int getAlpha() { + return mBitmapState.mPaint.getAlpha(); + } + @Override public void setColorFilter(ColorFilter cf) { mBitmapState.mPaint.setColorFilter(cf); diff --git a/graphics/java/android/graphics/drawable/ClipDrawable.java b/graphics/java/android/graphics/drawable/ClipDrawable.java index b7429d412e6fe..dcfe20f77165c 100644 --- a/graphics/java/android/graphics/drawable/ClipDrawable.java +++ b/graphics/java/android/graphics/drawable/ClipDrawable.java @@ -157,6 +157,11 @@ public class ClipDrawable extends Drawable implements Drawable.Callback { mClipState.mDrawable.setAlpha(alpha); } + @Override + public int getAlpha() { + return mClipState.mDrawable.getAlpha(); + } + @Override public void setColorFilter(ColorFilter cf) { mClipState.mDrawable.setColorFilter(cf); diff --git a/graphics/java/android/graphics/drawable/ColorDrawable.java b/graphics/java/android/graphics/drawable/ColorDrawable.java index d11e554053937..61dd675d08f3b 100644 --- a/graphics/java/android/graphics/drawable/ColorDrawable.java +++ b/graphics/java/android/graphics/drawable/ColorDrawable.java @@ -116,6 +116,7 @@ public class ColorDrawable extends Drawable { * * @return A value between 0 and 255. */ + @Override public int getAlpha() { return mState.mUseColor >>> 24; } diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java index 37f2250658f6a..67dc4d6759db1 100644 --- a/graphics/java/android/graphics/drawable/Drawable.java +++ b/graphics/java/android/graphics/drawable/Drawable.java @@ -405,6 +405,17 @@ public abstract class Drawable { */ public abstract void setAlpha(int alpha); + /** + * Gets the current alpha value for the drawable. 0 means fully transparent, + * 255 means fully opaque. This method is implemented by + * Drawable subclasses and the value returned is specific to how that class treats alpha. + * The default return value is 255 if the class does not override this method to return a value + * specific to its use of alpha. + */ + public int getAlpha() { + return 0xFF; + } + /** * Specify an optional colorFilter for the drawable. Pass null to remove * any filters. diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index a0c97012e3978..07c25c4714975 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -113,6 +113,11 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { } } + @Override + public int getAlpha() { + return mAlpha; + } + @Override public void setDither(boolean dither) { if (mDrawableContainerState.mDither != dither) { diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java index b966bb461135e..d226c8c707776 100644 --- a/graphics/java/android/graphics/drawable/GradientDrawable.java +++ b/graphics/java/android/graphics/drawable/GradientDrawable.java @@ -638,6 +638,11 @@ public class GradientDrawable extends Drawable { } } + @Override + public int getAlpha() { + return mAlpha; + } + @Override public void setDither(boolean dither) { if (dither != mDither) { diff --git a/graphics/java/android/graphics/drawable/InsetDrawable.java b/graphics/java/android/graphics/drawable/InsetDrawable.java index 231234cf4ee73..1507a9b255763 100644 --- a/graphics/java/android/graphics/drawable/InsetDrawable.java +++ b/graphics/java/android/graphics/drawable/InsetDrawable.java @@ -192,7 +192,12 @@ public class InsetDrawable extends Drawable implements Drawable.Callback public void setAlpha(int alpha) { mInsetState.mDrawable.setAlpha(alpha); } - + + @Override + public int getAlpha() { + return mInsetState.mDrawable.getAlpha(); + } + @Override public void setColorFilter(ColorFilter cf) { mInsetState.mDrawable.setColorFilter(cf); diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index dd692c68ec7e9..dfbd9864375ac 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -402,7 +402,18 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { array[i].mDrawable.setAlpha(alpha); } } - + + @Override + public int getAlpha() { + final ChildDrawable[] array = mLayerState.mChildren; + if (mLayerState.mNum > 0) { + // All layers should have the same alpha set on them - just return the first one + return array[0].mDrawable.getAlpha(); + } else { + return super.getAlpha(); + } + } + @Override public void setColorFilter(ColorFilter cf) { final ChildDrawable[] array = mLayerState.mChildren; diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java index a9dc22b34efce..8429e241a45e6 100644 --- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java +++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java @@ -250,6 +250,15 @@ public class NinePatchDrawable extends Drawable { invalidateSelf(); } + @Override + public int getAlpha() { + if (mPaint == null) { + // Fast common case -- normal alpha. + return 0xFF; + } + return getPaint().getAlpha(); + } + @Override public void setColorFilter(ColorFilter cf) { if (mPaint == null && cf == null) { diff --git a/graphics/java/android/graphics/drawable/RotateDrawable.java b/graphics/java/android/graphics/drawable/RotateDrawable.java index e987679dd49fe..7cbc7370a0856 100644 --- a/graphics/java/android/graphics/drawable/RotateDrawable.java +++ b/graphics/java/android/graphics/drawable/RotateDrawable.java @@ -108,6 +108,11 @@ public class RotateDrawable extends Drawable implements Drawable.Callback { mState.mDrawable.setAlpha(alpha); } + @Override + public int getAlpha() { + return mState.mDrawable.getAlpha(); + } + public void setColorFilter(ColorFilter cf) { mState.mDrawable.setColorFilter(cf); } diff --git a/graphics/java/android/graphics/drawable/ScaleDrawable.java b/graphics/java/android/graphics/drawable/ScaleDrawable.java index bd2b2f0624a4b..8a28b2b3a1143 100644 --- a/graphics/java/android/graphics/drawable/ScaleDrawable.java +++ b/graphics/java/android/graphics/drawable/ScaleDrawable.java @@ -176,6 +176,11 @@ public class ScaleDrawable extends Drawable implements Drawable.Callback { mScaleState.mDrawable.setAlpha(alpha); } + @Override + public int getAlpha() { + return mScaleState.mDrawable.getAlpha(); + } + @Override public void setColorFilter(ColorFilter cf) { mScaleState.mDrawable.setColorFilter(cf); diff --git a/graphics/java/android/graphics/drawable/ShapeDrawable.java b/graphics/java/android/graphics/drawable/ShapeDrawable.java index 1dbcddbf63aef..93f2dc603ee98 100644 --- a/graphics/java/android/graphics/drawable/ShapeDrawable.java +++ b/graphics/java/android/graphics/drawable/ShapeDrawable.java @@ -252,7 +252,12 @@ public class ShapeDrawable extends Drawable { mShapeState.mAlpha = alpha; invalidateSelf(); } - + + @Override + public int getAlpha() { + return mShapeState.mAlpha; + } + @Override public void setColorFilter(ColorFilter cf) { mShapeState.mPaint.setColorFilter(cf); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FixedSizeDrawable.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FixedSizeDrawable.java index 8f2f5f9e7e7ab..0e8095c1be00e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FixedSizeDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FixedSizeDrawable.java @@ -60,6 +60,10 @@ public class FixedSizeDrawable extends Drawable { mDrawable.setAlpha(alpha); } + public int getAlpha() { + return mDrawable.getAlpha(); + } + public void setColorFilter(ColorFilter cf) { mDrawable.setColorFilter(cf); }