From cd728097ff189542877a2952879a3aa3c6cb5666 Mon Sep 17 00:00:00 2001 From: Mark Wei Date: Fri, 22 Nov 2013 16:27:59 -0800 Subject: Fix bug where the paint's color and alpha were overriding each other. Change-Id: I47f41c3bc20243cef209c2c299642c024cf35652 --- src/com/android/bitmap/drawable/TileDrawable.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') 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)); + } } -- cgit v1.2.3