FileDocCategorySizeDatePackage
KeyguardCircleFramedDrawable.javaAPI DocAndroid 5.1 API5662Thu Mar 12 22:22:42 GMT 2015com.android.keyguard

KeyguardCircleFramedDrawable

public class KeyguardCircleFramedDrawable extends android.graphics.drawable.Drawable

Fields Summary
private final android.graphics.Bitmap
mBitmap
private final int
mSize
private final android.graphics.Paint
mPaint
private final float
mShadowRadius
private final float
mStrokeWidth
private final int
mFrameColor
private final int
mHighlightColor
private final int
mFrameShadowColor
private float
mScale
private android.graphics.Path
mFramePath
private android.graphics.Rect
mSrcRect
private android.graphics.RectF
mDstRect
private android.graphics.RectF
mFrameRect
private boolean
mPressed
Constructors Summary
public KeyguardCircleFramedDrawable(android.graphics.Bitmap bitmap, int size, int frameColor, float strokeWidth, int frameShadowColor, float shadowRadius, int highlightColor)

        super();
        mSize = size;
        mShadowRadius = shadowRadius;
        mFrameColor = frameColor;
        mFrameShadowColor = frameShadowColor;
        mStrokeWidth = strokeWidth;
        mHighlightColor = highlightColor;

        mBitmap = Bitmap.createBitmap(mSize, mSize, Bitmap.Config.ARGB_8888);
        final Canvas canvas = new Canvas(mBitmap);

        final int width = bitmap.getWidth();
        final int height = bitmap.getHeight();
        final int square = Math.min(width, height);

        final Rect cropRect = new Rect((width - square) / 2, (height - square) / 2, square, square);
        final RectF circleRect = new RectF(0f, 0f, mSize, mSize);
        circleRect.inset(mStrokeWidth / 2f, mStrokeWidth / 2f);
        circleRect.inset(mShadowRadius, mShadowRadius);

        final Path fillPath = new Path();
        fillPath.addArc(circleRect, 0f, 360f);

        canvas.drawColor(0, PorterDuff.Mode.CLEAR);

        // opaque circle matte
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setColor(Color.BLACK);
        mPaint.setStyle(Paint.Style.FILL);
        canvas.drawPath(fillPath, mPaint);

        // mask in the icon where the bitmap is opaque
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
        canvas.drawBitmap(bitmap, cropRect, circleRect, mPaint);

        // prepare paint for frame drawing
        mPaint.setXfermode(null);

        mScale = 1f;

        mSrcRect = new Rect(0, 0, mSize, mSize);
        mDstRect = new RectF(0, 0, mSize, mSize);
        mFrameRect = new RectF(mDstRect);
        mFramePath = new Path();
    
Methods Summary
public voiddraw(android.graphics.Canvas canvas)

        // clear background
        final float outside = Math.min(canvas.getWidth(), canvas.getHeight());
        final float inside = mScale * outside;
        final float pad = (outside - inside) / 2f;

        mDstRect.set(pad, pad, outside - pad, outside - pad);
        canvas.drawBitmap(mBitmap, mSrcRect, mDstRect, null);

        mFrameRect.set(mDstRect);
        mFrameRect.inset(mStrokeWidth / 2f, mStrokeWidth / 2f);
        mFrameRect.inset(mShadowRadius, mShadowRadius);

        mFramePath.reset();
        mFramePath.addArc(mFrameRect, 0f, 360f);

        // white frame
        if (mPressed) {
            mPaint.setStyle(Paint.Style.FILL);
            mPaint.setColor(Color.argb((int) (0.33f * 255),
                            Color.red(mHighlightColor),
                            Color.green(mHighlightColor),
                            Color.blue(mHighlightColor)));
            canvas.drawPath(mFramePath, mPaint);
        }
        mPaint.setStrokeWidth(mStrokeWidth);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(mPressed ? mHighlightColor : mFrameColor);
        mPaint.setShadowLayer(mShadowRadius, 0f, 0f, mFrameShadowColor);
        canvas.drawPath(mFramePath, mPaint);
    
public intgetOpacity()

        return PixelFormat.TRANSLUCENT;
    
public floatgetScale()

        return mScale;
    
public voidreset()

        mScale = 1f;
        mPressed = false;
    
public voidsetAlpha(int alpha)

    
public voidsetColorFilter(android.graphics.ColorFilter cf)

    
public voidsetPressed(boolean pressed)

        mPressed = pressed;
    
public voidsetScale(float scale)

        mScale = scale;
    
public booleanverifyParams(float iconSize, int frameColor, float stroke, int frameShadowColor, float shadowRadius, int highlightColor)

        return mSize == iconSize
                && mFrameColor == frameColor
                && mStrokeWidth == stroke
                && mFrameShadowColor == frameShadowColor
                && mShadowRadius == shadowRadius
                && mHighlightColor == highlightColor;