Paint paint = new Paint(); final RectF rect = new RectF(); //Example values rect.set(mWidth/2- mRadius, mHeight/2 - mRadius, mWidth/2 + mRadius, mHeight/2 + mRadius); paint.setColor(Color.GREEN); paint.setStrokeWidth(20); paint.setAntiAlias(true); paint.setStrokeCap(Paint.Cap.ROUND); paint.setStyle(Paint.Style.STROKE); canvas.drawArc(rect, -90, 360, false, paint);
protected void draw(Canvas canvas) { canvas.save(); Path path = new Path(); outlinePaint.setStrokeWidth(outlineWidth); if (!hasFocus()) { outlinePaint.setColor(Color.BLACK); canvas.drawRect(drawRect, outlinePaint); } else { viewContext.getDrawingRect(viewDrawingRect); path.addRect(new RectF(drawRect), Path.Direction.CW); outlinePaint.setColor(highlightColor);
public RoundedDrawable(Bitmap bitmap, int cornerRadius, int margin) { this.cornerRadius = cornerRadius; this.margin = margin; bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mBitmapRect = new RectF (margin, margin, bitmap.getWidth() - margin, bitmap.getHeight() - margin); paint = new Paint(); paint.setAntiAlias(true); paint.setShader(bitmapShader); paint.setFilterBitmap(true); paint.setDither(true); }
@Override public void draw(Canvas canvas, Paint paint) { paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(3); float circleSpacing=12; float x = (getWidth()) / 2; float y=(getHeight()) / 2; canvas.translate(x, y); canvas.scale(scaleFloat, scaleFloat); canvas.rotate(degrees); RectF rectF=new RectF(-x+circleSpacing,-y+circleSpacing,0+x-circleSpacing,0+y-circleSpacing); canvas.drawArc(rectF, -45, 270, false, paint); }
private void drawHandleShadows(Canvas canvas) { mPaintFrame.setStyle(Paint.Style.FILL); mPaintFrame.setColor(TRANSLUCENT_BLACK); RectF rect = new RectF(mFrameRect); rect.offset(0, 1); canvas.drawCircle(rect.left, rect.top, mHandleSize, mPaintFrame); canvas.drawCircle(rect.right, rect.top, mHandleSize, mPaintFrame); canvas.drawCircle(rect.left, rect.bottom, mHandleSize, mPaintFrame); canvas.drawCircle(rect.right, rect.bottom, mHandleSize, mPaintFrame); }
/** * For testing purposes only. DO NOT USE IN PRODUCTION. */ public static Bitmap renderPath(Path path) { RectF bounds = new RectF(); path.computeBounds(bounds, false); Bitmap bitmap = Bitmap.createBitmap((int) bounds.right, (int) bounds.bottom, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Paint paint = new LPaint(); paint.setAntiAlias(true); paint.setColor(Color.BLUE); canvas.drawPath(path, paint); return bitmap; } }
Bitmap myCoolBitmap = ... ; // <-- Your bitmap you want rounded int w = myCoolBitmap.getWidth(), h = myCoolBitmap.getHeight(); // We have to make sure our rounded corners have an alpha channel in most cases Bitmap rounder = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(rounder); // We're going to apply this paint eventually using a porter-duff xfer mode. // This will allow us to only overwrite certain pixels. RED is arbitrary. This // could be any color that was fully opaque (alpha = 255) Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG); xferPaint.setColor(Color.RED); // We're just reusing xferPaint to paint a normal looking rounded box, the 20.f // is the amount we're rounding by. canvas.drawRoundRect(new RectF(0,0,w,h), 20.0f, 20.0f, xferPaint); // Now we apply the 'magic sauce' to the paint xferPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
public void fillArc(float x, float y, float width, float height, float startAngle, float arcAngle) { if (arcAngle == 0) { return; } Style oldStyle = paint.getStyle(); paint.setStyle(Style.FILL); RectF rectF = new RectF(x, y, x + width, y + height); canvas.drawArc(rectF, startAngle, arcAngle, true, paint); paint.setStyle(oldStyle); }
private void drawCircle(Canvas canvas) { outlinePaint.setStrokeWidth(1); canvas.drawOval(new RectF(drawRect), outlinePaint); }
public BackgroundDrawable(){ mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setStyle(Paint.Style.FILL); mRect = new RectF(); }
private static final RectF sClipBounds = new RectF(); private static final RectF sDrawBounds = new RectF(); float bottom, boolean insetHorizontal) { mPaint.setStrokeWidth(strokeWidth); mPaint.setColor(color); sClipBounds.set(left, top, right, bottom); sDrawBounds.set(getBounds());
private CheckBoxDrawable(int width, int height, int boxSize, int cornerRadius, int strokeSize, ColorStateList strokeColor, int tickColor, int animDuration){ mWidth = width; mHeight = height; mBoxSize = boxSize; mCornerRadius = cornerRadius; mStrokeSize = strokeSize; mStrokeColor = strokeColor; mTickColor = tickColor; mAnimDuration = animDuration; mPaint = new Paint(); mPaint.setAntiAlias(true); mBoxRect = new RectF(); mTickPath = new Path(); }
@Override public void draw(Canvas canvas, Paint paint) { paint.setStrokeWidth(3); paint.setStyle(Paint.Style.STROKE); float circleSpacing=12; float x=getWidth()/2; float y=getHeight()/2; canvas.save(); canvas.translate(x, y); canvas.scale(scaleFloat, scaleFloat); canvas.rotate(degrees); //draw two big arc float[] bStartAngles=new float[]{135,-45}; for (int i = 0; i < 2; i++) { RectF rectF=new RectF(-x+circleSpacing,-y+circleSpacing,x-circleSpacing,y-circleSpacing); canvas.drawArc(rectF, bStartAngles[i], 90, false, paint); } canvas.restore(); canvas.translate(x, y); canvas.scale(scaleFloat, scaleFloat); canvas.rotate(-degrees); //draw two small arc float[] sStartAngles=new float[]{225,45}; for (int i = 0; i < 2; i++) { RectF rectF=new RectF(-x/1.8f+circleSpacing,-y/1.8f+circleSpacing,x/1.8f-circleSpacing,y/1.8f-circleSpacing); canvas.drawArc(rectF, sStartAngles[i], 90, false, paint); } }
@Override protected void draw(Canvas canvas, Rect bounds) { int saveCount = canvas.save(); RectF arcBounds = mTempBounds; arcBounds.set(bounds); mPaint.setColor(mColor); //calculate fish clip bounds //clip the width of the fish need to increase mPathDottedLineSize * 1.2f RectF fishRectF = new RectF(mFishHeadPos[0] - mFishWidth / 2.0f - mPathDottedLineSize * 1.2f, mFishHeadPos[1] - mFishHeight / 2.0f, mFishHeadPos[0] + mFishWidth / 2.0f + mPathDottedLineSize * 1.2f, mFishHeadPos[1] + mFishHeight / 2.0f); Matrix matrix = new Matrix(); matrix.postRotate(mFishRotateDegrees, fishRectF.centerX(), fishRectF.centerY()); matrix.mapRect(fishRectF); //draw river int riverSaveCount = canvas.save(); mPaint.setStyle(Paint.Style.STROKE); canvas.clipRect(fishRectF, Region.Op.DIFFERENCE); canvas.drawPath(createRiverPath(arcBounds), mPaint); canvas.restoreToCount(riverSaveCount); //draw fish int fishSaveCount = canvas.save(); mPaint.setStyle(Paint.Style.FILL); canvas.rotate(mFishRotateDegrees, mFishHeadPos[0], mFishHeadPos[1]); canvas.clipPath(createFishEyePath(mFishHeadPos[0], mFishHeadPos[1] - mFishHeight * 0.06f), Region.Op.DIFFERENCE); canvas.drawPath(createFishPath(mFishHeadPos[0], mFishHeadPos[1]), mPaint); canvas.restoreToCount(fishSaveCount); canvas.restoreToCount(saveCount); }