You can create a custom drawable to change color and radius of the circle dynamically
import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class CircleDrawable extends Drawable { private Paint circlePaint; private int fillColor; private int strokeColor; private float radius; public CircleDrawable(int fillColor, int strokeColor, float radius) { this.fillColor = fillColor; this.strokeColor = strokeColor; this.radius = radius; circlePaint=new Paint(Paint.ANTI_ALIAS_FLAG); } @Override public void draw(@NonNull Canvas canvas) { int x=getBounds().centerX(); int y=getBounds().centerY(); //draw fill color circle circlePaint.setStyle(Paint.Style.FILL); circlePaint.setColor(fillColor); canvas.drawCircle(x,y,radius,circlePaint); // draw stroke circle circlePaint.setStyle(Paint.Style.STROKE); circlePaint.setColor(strokeColor); circlePaint.setStrokeWidth(5); canvas.drawCircle(x,y,radius,circlePaint); } @Override public void setAlpha(int alpha) { circlePaint.setAlpha(alpha); } @Override public void setColorFilter(@Nullable ColorFilter colorFilter) { circlePaint.setColorFilter(colorFilter); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } }
Set this from UI to get the circle shape
imageView.setImageDrawable(new CircleDrawable(Color.RED,Color.YELLOW,100));
The Output Will be like this

android:shapeelement - Drawable resources.