A few months ago I was working on a project which required me to build a class that would download an image form the web, decode it, crop it, and show it in a circle – with a transparent background behind it, because it had to sit on top of different layout views.
The end goal was to show the image just like an ImageView, only in a circle. This required me to extend a
View and override the onDraw method to show it.
The circle part was tricky, so I thought I’d share that piece of code…
// init shader
shader = new BitmapShader(originalBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
// init paint
Paint paint = new Paint();
int circleCenter = width / 2;
// circleCenter is the x or y of the view's center
// radius is the radius in pixels of the cirle to be drawn
// paint contains the shader that will texture the shape
canvas.drawCircle(circleCenter, circleCenter, radus, paint);