private static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int roundPixels, Rect srcRect, Rect destRect, int width, int height) { Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888); Canvas canvas = new Canvas(output); final Paint paint = new Paint(); final RectF destRectF = new RectF(destRect); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(0xFF000000); canvas.drawRoundRect(destRectF, roundPixels, roundPixels, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, srcRect, destRectF, paint); return output; } }
public RoundedDrawable(Bitmap bitmap) { mBitmap = bitmap; mBitmapWidth = bitmap.getWidth(); mBitmapHeight = bitmap.getHeight(); mBitmapRect.set(0, 0, mBitmapWidth, mBitmapHeight); mBitmapPaint = new Paint(); mBitmapPaint.setStyle(Paint.Style.FILL); mBitmapPaint.setAntiAlias(true); mBorderPaint = new Paint(); mBorderPaint.setStyle(Paint.Style.STROKE); mBorderPaint.setAntiAlias(true); mBorderPaint.setColor(mBorderColor.getColorForState(getState(), DEFAULT_BORDER_COLOR)); mBorderPaint.setStrokeWidth(mBorderWidth); }
private void make(Bitmap bitmap) { mBitmap = getCroppedRoundBitmap(bitmap, 255, 15); mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mBitmapPaint.setAntiAlias(true); mBitmapPaint.setShader(mBitmapShader); mDrawableRect.set(0, 0, getWidth(), getHeight()); mDrawableRadius = Math.min(mDrawableRect.height() / 2, mDrawableRect.width() / 2); mBitmapHeight = mBitmap.getHeight(); mBitmapWidth = mBitmap.getWidth(); updateShaderMatrix(); invalidate(); }
mPaint.setShader(s); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(32); float r = CENTER_X - mPaint.getStrokeWidth()*0.5f; canvas.translate(CENTER_X, CENTER_X); canvas.drawOval(new RectF(-r, -r, r, r), mPaint); canvas.drawCircle(0, 0, CENTER_RADIUS, mCenterPaint); float x = event.getX() - CENTER_X; float y = event.getY() - CENTER_Y; boolean inCenter = java.lang.Math.sqrt(x*x + y*y) <= CENTER_RADIUS; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mTrackingCenter = inCenter;
mOverlayPos = new RectF(); mScrollFade = new ScrollFade(); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setTextAlign(Paint.Align.CENTER); mPaint.setTextSize(mOverlayTextSize); mPaint.setColor(0xFFFFFFFF); canvas.translate(0, y); mCurrentThumb.draw(canvas); canvas.translate(0, -y); float descent = paint.descent(); final RectF rectF = mOverlayPos; canvas.drawText(mSectionText, (int) (rectF.left + rectF.right) / 2, (int) (rectF.bottom + rectF.top) / 2 + descent, paint); } else if (alpha == 0) { if (mThumbVisible && ev.getAction() == MotionEvent.ACTION_DOWN) { if (ev.getX() > getWidth() - mThumbW && ev.getY() >= mThumbY && ev.getY() <= mThumbY + mThumbH) { mDragging = true;
0xFFCC0000}; private RectF oval = new RectF(); private RectF middleOval = new RectF(); private RectF finalOVal = new RectF(); pencil = new Paint(Paint.ANTI_ALIAS_FLAG); init = 160; fina = 360; finalOVal.set(px-middleCircleRadius-4, py-middleCircleRadius-4, px+middleCircleRadius+4, py+middleCircleRadius+4); middleOval.set(px-middleCircleRadius, py-middleCircleRadius, px+middleCircleRadius, py+middleCircleRadius); while(init<fina) canvas.drawArc(middleOval, 180, 180, false, pencil); canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack); canvas.drawArc(middleOval, midInitial, 36, true, pencil); float centerY = (py-centerCircleradius+(centerCircleradius/4)); switch(event.getAction()) if(isInSideCenterCircle(centerX, centerY, centerCircleradius, event.getX(), event.getY())) )); return new RectF(locx-20, locy-20, locx+20, locy+20);
public CircleDrawable(Bitmap bitmap, Integer strokeColor, float strokeWidth) { radius = Math.min(bitmap.getWidth(), bitmap.getHeight()) / 2; bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mBitmapRect = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()); paint = new Paint(); paint.setAntiAlias(true); paint.setShader(bitmapShader); paint.setFilterBitmap(true); paint.setDither(true); if (strokeColor == null) { strokePaint = null; } else { strokePaint = new Paint(); strokePaint.setStyle(Paint.Style.STROKE); strokePaint.setColor(strokeColor); strokePaint.setStrokeWidth(strokeWidth); strokePaint.setAntiAlias(true); } this.strokeWidth = strokeWidth; strokeRadius = radius - strokeWidth / 2; }
final Bitmap mask = Bitmap.createBitmap(dstWidth, dstHeight, Config.ALPHA_8); final Matrix scaleToFit = new Matrix(); final RectF src = new RectF(0, 0, bm.getWidth(), bm.getHeight()); final RectF dst = new RectF(0, 0, dstWidth - dx, dstHeight - dy); scaleToFit.setRectToRect(src, dst, ScaleToFit.CENTER); dropShadow.postTranslate(dx, dy); maskCanvas.drawBitmap(bm, scaleToFit, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); maskCanvas.drawBitmap(bm, dropShadow, paint); paint.reset(); paint.setAntiAlias(true); paint.setColor(color); paint.setMaskFilter(filter); retCanvas.drawBitmap(mask, 0, 0, paint); retCanvas.drawBitmap(bm, scaleToFit, null); mask.recycle(); return ret;
mOval = new RectF(); mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mTextPaint.setTextSize(48); mTextPaint.setTextAlign(Align.CENTER); mTextPaint.setColor(0xffffaa00); mTextPaint.setTypeface(Typeface.DEFAULT_BOLD); Matrix m = new Matrix(); RectF src = new RectF(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); RectF dst = new RectF(0, 0, w, h); m.setRectToRect(src, dst, ScaleToFit.CENTER); Shader shader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP); shader.setLocalMatrix(m); mPaint.setShader(shader); m.mapRect(mOval, src); canvas.drawColor(0xff0000aa); canvas.drawArc(mOval, -90, mAngle, true, mPaint); canvas.drawText("click me", getWidth() / 2, getHeight() / 2, mTextPaint); float w2 = getWidth() / 2f; float h2 = getHeight() / 2f; mAngle = (float) Math.toDegrees(Math.atan2(event.getY() - h2, event.getX() - w2)); mAngle += 90 + 360; mAngle %= 360;
private RectF circleRect = new RectF(); private Path segment = new Path(); private Paint strokePaint = new Paint(); private Paint fillPaint = new Paint(); fillPaint.setColor(fillColor); strokePaint.setColor(strokeColor); strokePaint.setStrokeWidth(strokeWidth); center.y = getHeight() / 2; radius = Math.min(getWidth(), getHeight()) / 2 - (int) strokeWidth; circleRect.set(center.x - radius, center.y - radius, center.x + radius, center.y + radius); float sweepAngle = 2 * angle - 180; segment.rewind(); segment.addArc(circleRect, startAngle, sweepAngle); segment.close(); canvas.drawPath(segment, fillPaint); canvas.drawCircle(center.x, center.y, radius, strokePaint);
p = new Paint(); p.setAntiAlias(true); protected void onDraw(Canvas canvas) { super.onDraw(canvas); bitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888); RectF rectF = new RectF(); rectF.set(getStartX(), getStartY(), getStartX() + getRadius(), getStartY() + getRadius()); p.setColor(colors.get(i)); canvas.drawArc(rectF, 0, values.get(i) * angle, true, p); c.drawArc(rectF, 0, values.get(i) * angle, true, p); } else { public boolean onTouchEvent(MotionEvent event) { int color = bitmap.getPixel((int) event.getX(), (int) event.getY());
private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); canvas.drawRoundRect(rectF, radius, radius, paint); return result; }
Path ctx = new Path(); ctx.moveTo(Ax,Ay); //A ctx.lineTo(Bx,By);//B ctx.arcTo(new RectF(Bx, By, Cx, Cy), 270, 90); //B-C arc ctx.lineTo(Dx,Dy); //D ctx.arcTo(new RectF(Dx - arc, Dy, Ex + arc, Ey),0,90); //D-E arc ctx.lineTo(Fx, Fy); //E-F ctx.lineTo(Hx, Hy); //G-H ctx.lineTo(Ix, Iy); //H - I ctx.arcTo(new RectF(Jx, Jy, Ix, Iy),90,90);// I = J arc ctx.lineTo(Kx, Ky); //K ctx.arcTo(new RectF(Ax - arc, Ay, Kx + arc, Ky),180,90); //K - A arc ctx.lineTo(Ax, Ay); //K Paint p = new Paint(); p.setAntiAlias(true); p.setColor(0xffffffff); p.setStyle(Style.FILL); canvas.drawPath(ctx, p);
Bitmap bmpOriginal = BitmapFactory.decodeResource(this.getResources(), R.drawable.map_pin); Bitmap targetBitmap = Bitmap.createBitmap((bmpOriginal.getWidth()), (bmpOriginal.getHeight()), Bitmap.Config.ARGB_8888); Paint p = new Paint(); p.setAntiAlias(true); Matrix matrix = new Matrix(); matrix.setRotate((float) lock.getDirection(),(float) (bmpOriginal.getWidth()/2), (float)(bmpOriginal.getHeight()/2)); RectF rectF = new RectF(0, 0, bmpOriginal.getWidth(), bmpOriginal.getHeight()); matrix.mapRect(rectF); targetBitmap = Bitmap.createBitmap((int)rectF.width(), (int)rectF.height(), Bitmap.Config.ARGB_8888); Canvas tempCanvas = new Canvas(targetBitmap); tempCanvas.drawBitmap(bmpOriginal, matrix, p);
super(context); path = new Path(); paint = new Paint(); paint.setColor(Color.BLUE); paint.setAntiAlias(true); paint.setStrokeWidth(15); paint.setStyle(Style.STROKE); rf = new RectF(200, 200, 500, 500); rf2 = new RectF(200, 200, 400, 500); rf3 = new RectF(100, 200, 400, 500); path.arcTo(rf, 0, 180); canvas.drawPath(path, paint); canvas.drawPath(path, paintWhite); path.reset(); path.arcTo(rf2, 180, 180); canvas.drawPath(path, paint); canvas.drawPath(path, paintWhite); path.reset();
//put your bitmap here Bitmap mIcon11= MainActivity.drawableToBitmap(getResources().getDrawable(R.drawable.crow)); Bitmap output = Bitmap.createBitmap(mIcon11.getWidth(), mIcon11.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final Rect itemRect = new Rect(0, 0, mIcon11.getWidth(), mIcon11.getHeight()); RectF roundRect = new RectF(itemRect); Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); //your bitmap here Bitmap bitmap = MainActivity.drawableToBitmap(getResources().getDrawable(R.drawable.crow)); mPaint.setStyle(Paint.Style.FILL); mPaint.setColor(Color.WHITE); canvas.drawRoundRect(roundRect, 100, 100, mPaint); roundRect.set(itemRect.left + 5, itemRect.top + 5, itemRect.right - 5, itemRect.bottom - 5); Path clipPath = new Path(); //roundness of border clipPath.addRoundRect(roundRect, 100, 100, Path.Direction.CW); canvas.save(Canvas.CLIP_SAVE_FLAG); canvas.clipPath(clipPath); canvas.drawBitmap(bitmap, null, roundRect, mPaint); canvas.restore(); myImageView.setImageBitmap(output);
Bitmap bitmap = yourBitmap; Matrix matrix = new Matrix(); matrix.postRotate(angle); Rect srcR = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); RectF dstR = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()); RectF deviceR = new RectF(); matrix.mapRect(deviceR, dstR); int neww = Math.round(deviceR.width()); int newh = Math.round(deviceR.height()); Bitmap result = Bitmap.createBitmap(neww, newh, Bitmap.Config.ARGB_8888); result.eraseColor(Color.TRANSPARENT); Canvas canvas = new Canvas(); canvas.translate(-deviceR.left, -deviceR.top); canvas.concat(matrix); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setFilterBitmap(true); canvas.setBitmap(result); canvas.drawBitmap(bitmap, srcR, dstR, paint); canvas.setBitmap(null);