package in.srain.cube.image.drawable; import android.graphics.*; import android.graphics.drawable.Drawable; /** * A drawable with rounded corners; * * @author http://www.liaohuqiu.net */ public class RoundedDrawable extends Drawable { protected final float mCornerRadius; protected final int mMargin; protected final RectF mRect = new RectF(); protected final BitmapShader mBitmapShader; protected final Paint mPaint; public RoundedDrawable(Bitmap bitmap, float cornerRadius, int margin) { mCornerRadius = cornerRadius; mMargin = margin; mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setShader(mBitmapShader); } @Override protected void onBoundsChange(Rect bounds) { super.onBoundsChange(bounds); mRect.set(mMargin, mMargin, bounds.width() - mMargin, bounds.height() - mMargin); } @Override public void draw(Canvas canvas) { canvas.drawRoundRect(mRect, mCornerRadius, mCornerRadius, mPaint); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } }