diff --git a/api/current.txt b/api/current.txt index 31d45f2cfbf6e..7ff9ea67fc0a4 100644 --- a/api/current.txt +++ b/api/current.txt @@ -11699,6 +11699,8 @@ package android.graphics.drawable { method public android.graphics.drawable.Drawable.ConstantState getConstantState(); method public android.graphics.drawable.Drawable getCurrent(); method public android.graphics.Rect getDirtyBounds(); + method public boolean getDither(); + method public boolean getFilterBitmap(); method public int getIntrinsicHeight(); method public int getIntrinsicWidth(); method public final int getLevel(); diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java index f2b635a78ad45..945ae2e025369 100644 --- a/graphics/java/android/graphics/drawable/BitmapDrawable.java +++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java @@ -357,6 +357,11 @@ public class BitmapDrawable extends Drawable { invalidateSelf(); } + @Override + public boolean getDither() { + return mBitmapState.mPaint.isDither(); + } + /** * Indicates the repeat behavior of this drawable on the X axis. * diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java index 0e38cc0a14da8..fa269e02d9d9b 100644 --- a/graphics/java/android/graphics/drawable/Drawable.java +++ b/graphics/java/android/graphics/drawable/Drawable.java @@ -273,6 +273,14 @@ public abstract class Drawable { */ public void setDither(boolean dither) {} + /** + * @return whether this drawable dither its colors + * @see #setDither(boolean) + */ + public boolean getDither() { + return false; + } + /** * Set to true to have the drawable filter its bitmap when scaled or rotated * (for drawables that use bitmaps). If the drawable does not use bitmaps, @@ -281,6 +289,14 @@ public abstract class Drawable { */ public void setFilterBitmap(boolean filter) {} + /** + * @return whether this drawable filters its bitmap + * @see #setFilterBitmap(boolean) + */ + public boolean getFilterBitmap() { + return false; + } + /** * Implement this interface if you want to create an animated drawable that * extends {@link android.graphics.drawable.Drawable Drawable}. diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 39ef10cbb5aa2..557f563044f23 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -166,6 +166,11 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { } } + @Override + public boolean getDither() { + return mDrawableContainerState.mDither; + } + @Override public void setColorFilter(ColorFilter cf) { mDrawableContainerState.mHasColorFilter = (cf != null); diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java index 78827051ddbea..cc2de22dfe177 100644 --- a/graphics/java/android/graphics/drawable/GradientDrawable.java +++ b/graphics/java/android/graphics/drawable/GradientDrawable.java @@ -821,6 +821,11 @@ public class GradientDrawable extends Drawable { } } + @Override + public boolean getDither() { + return mGradientState.mDither; + } + @Override public ColorFilter getColorFilter() { return mColorFilter; diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index 4aa5f59aa8620..daf44271ef743 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -647,6 +647,18 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { } } + @Override + public boolean getDither() { + final ChildDrawable[] array = mLayerState.mChildren; + if (mLayerState.mNum > 0) { + // All layers should have the same dither set on them - just return + // the first one + return array[0].mDrawable.getDither(); + } else { + return super.getDither(); + } + } + @Override public void setAlpha(int alpha) { final ChildDrawable[] array = mLayerState.mChildren; diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java index a6299be31c97a..617bf7c6e413d 100644 --- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java +++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java @@ -373,6 +373,11 @@ public class NinePatchDrawable extends Drawable { invalidateSelf(); } + @Override + public boolean getDither() { + return mPaint == null ? DEFAULT_DITHER : mPaint.isDither(); + } + @Override public void setAutoMirrored(boolean mirrored) { mNinePatchState.mAutoMirrored = mirrored; diff --git a/graphics/java/android/graphics/drawable/PictureDrawable.java b/graphics/java/android/graphics/drawable/PictureDrawable.java index 6dcda1f565908..583cffb2d3df8 100644 --- a/graphics/java/android/graphics/drawable/PictureDrawable.java +++ b/graphics/java/android/graphics/drawable/PictureDrawable.java @@ -87,12 +87,6 @@ public class PictureDrawable extends Drawable { return PixelFormat.TRANSLUCENT; } - @Override - public void setFilterBitmap(boolean filter) {} - - @Override - public void setDither(boolean dither) {} - @Override public void setColorFilter(ColorFilter colorFilter) {} diff --git a/graphics/java/android/graphics/drawable/ShapeDrawable.java b/graphics/java/android/graphics/drawable/ShapeDrawable.java index c49bc8c23afd5..c208c03894e19 100644 --- a/graphics/java/android/graphics/drawable/ShapeDrawable.java +++ b/graphics/java/android/graphics/drawable/ShapeDrawable.java @@ -328,6 +328,11 @@ public class ShapeDrawable extends Drawable { invalidateSelf(); } + @Override + public boolean getDither() { + return mShapeState.mPaint.isDither(); + } + @Override protected void onBoundsChange(Rect bounds) { super.onBoundsChange(bounds);