diff options
author | Mark Wei <markwei@google.com> | 2014-03-02 19:25:41 -0800 |
---|---|---|
committer | Mark Wei <markwei@google.com> | 2014-03-02 19:25:41 -0800 |
commit | 09f46006437e7de33afdb51192bf0bdc08e97040 (patch) | |
tree | 1398af7f562bc676f9efc5275cd926a04955590c /src/com/android/bitmap/drawable/CircularBitmapDrawable.java | |
parent | ad97cd0e0753930ec68f189e6be1023dc0f62f75 (diff) | |
download | bitmap-09f46006437e7de33afdb51192bf0bdc08e97040.tar.gz |
CircularBitmapDrawable is now an ExtendedBitmapDrawable. Avatars can now fade in!
Change-Id: I79fae35f0949a17309bce0cffd6b10e7e6d8db2c
Diffstat (limited to 'src/com/android/bitmap/drawable/CircularBitmapDrawable.java')
-rw-r--r-- | src/com/android/bitmap/drawable/CircularBitmapDrawable.java | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/com/android/bitmap/drawable/CircularBitmapDrawable.java b/src/com/android/bitmap/drawable/CircularBitmapDrawable.java index 32eb460..878cb6b 100644 --- a/src/com/android/bitmap/drawable/CircularBitmapDrawable.java +++ b/src/com/android/bitmap/drawable/CircularBitmapDrawable.java @@ -27,6 +27,7 @@ import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Rect; import android.graphics.Shader.TileMode; +import android.graphics.drawable.BitmapDrawable; import com.android.bitmap.BitmapCache; @@ -35,7 +36,7 @@ import com.android.bitmap.BitmapCache; * * This draws all bitmaps as a circle with an optional border stroke. */ -public class CircularBitmapDrawable extends BasicBitmapDrawable { +public class CircularBitmapDrawable extends ExtendedBitmapDrawable { private static Matrix sMatrix = new Matrix(); private final Paint mBitmapPaint = new Paint(); @@ -45,7 +46,12 @@ public class CircularBitmapDrawable extends BasicBitmapDrawable { public CircularBitmapDrawable(Resources res, BitmapCache cache, boolean limitDensity) { - super(res, cache, limitDensity); + this(res, cache, limitDensity, null); + } + + public CircularBitmapDrawable(Resources res, + BitmapCache cache, boolean limitDensity, ExtendedOptions opts) { + super(res, cache, limitDensity, opts); mBitmapPaint.setAntiAlias(true); mBitmapPaint.setFilterBitmap(true); @@ -85,7 +91,17 @@ public class CircularBitmapDrawable extends BasicBitmapDrawable { @Override protected void onDrawBitmap(final Canvas canvas, final Rect src, final Rect dst) { - onDrawCircularBitmap(getBitmap().bmp, canvas, src, dst); + onDrawCircularBitmap(getBitmap().bmp, canvas, src, dst, 1f); + } + + @Override + protected void onDrawPlaceholderOrProgress(final Canvas canvas, + final TileDrawable drawable) { + BitmapDrawable placeholder = (BitmapDrawable) drawable.getInnerDrawable(); + Bitmap bitmap = placeholder.getBitmap(); + float alpha = placeholder.getPaint().getAlpha() / 255f; + sRect.set(0, 0, bitmap.getWidth(), bitmap.getHeight()); + onDrawCircularBitmap(bitmap, canvas, sRect, getBounds(), alpha); } /** @@ -93,7 +109,7 @@ public class CircularBitmapDrawable extends BasicBitmapDrawable { * BitmapShader. */ protected void onDrawCircularBitmap(final Bitmap bitmap, final Canvas canvas, - final Rect src, final Rect dst) { + final Rect src, final Rect dst, final float alpha) { // Draw bitmap through shader first. BitmapShader shader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP); @@ -109,8 +125,11 @@ public class CircularBitmapDrawable extends BasicBitmapDrawable { shader.setLocalMatrix(sMatrix); mBitmapPaint.setShader(shader); + int oldAlpha = mBitmapPaint.getAlpha(); + mBitmapPaint.setAlpha((int) (oldAlpha * alpha)); canvas.drawCircle(dst.centerX(), dst.centerY(), dst.width() / 2, mBitmapPaint); + mBitmapPaint.setAlpha(oldAlpha); // Then draw the border. canvas.drawCircle(dst.centerX(), dst.centerY(), |