diff options
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/bitmap/drawable/TileDrawable.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/com/android/bitmap/drawable/TileDrawable.java b/src/com/android/bitmap/drawable/TileDrawable.java index c756422..485e7ca 100644 --- a/src/com/android/bitmap/drawable/TileDrawable.java +++ b/src/com/android/bitmap/drawable/TileDrawable.java @@ -19,6 +19,7 @@ package com.android.bitmap.drawable; import android.animation.ValueAnimator; import android.animation.ValueAnimator.AnimatorUpdateListener; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.Rect; @@ -90,10 +91,13 @@ public class TileDrawable extends Drawable implements Drawable.Callback { if (!isVisible() && mPaint.getAlpha() == 0) { return; } + // Save paint alpha. final int alpha = mPaint.getAlpha(); - mPaint.setColor(mOpts.backgroundColor); - mPaint.setAlpha(alpha); + mPaint.setColor(getColorWithAlpha(mOpts.backgroundColor, alpha)); canvas.drawRect(getBounds(), mPaint); + // Restore paint alpha. + mPaint.setAlpha(alpha); + if (mInner != null) mInner.draw(canvas); } @@ -177,4 +181,9 @@ public class TileDrawable extends Drawable implements Drawable.Callback { unscheduleSelf(what); } + private static int getColorWithAlpha(int color, int alpha) { + float fade = alpha / 255f; + return Color.argb((int) (fade * Color.alpha(color)), Color.red(color), Color.green(color), + Color.blue(color)); + } } |