Drawing 2 circles on a canvas

android, canvas, graphics

Solution

Try this code.Hope it may helps :)

public class SimpleCircleActivity extends Activity
{

       private CircleDemoView circledemoView ;

       public void onCreate(Bundle savedInstanceState)
       { 
        super.onCreate(savedInstanceState);

        circledemoView =new CircleDemoView(this);
        setContentView(circledemoView);

       }


       private class CircleDemoView extends View
       {
         public CircleDemoView(Context context)
         {
             super(context);
         }

         @Override
         protected void onDraw(Canvas canvas) 
         {

             super.onDraw(canvas);
             Paint p = new Paint();
             p.setColor(Color.RED);
             DashPathEffect dashPath = new DashPathEffect(new float[]{5,5}, (float)1.0);

             p.setPathEffect(dashPath);
             p.setStyle(Style.STROKE);


             for (int i = 0; i < 2; i ++) {
                 canvas.drawCircle(200, 200, 50+(i*40), p);
             }


             invalidate();

     }
     }

}

Problem

I'm trying to draw two circles like this: This is how I'm trying to do it: ``` Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444); Canvas c = new Canvas(bmp); RectF rect = new RectF(0,0,width,width); Paint paint = new Paint(); drawCircles(paint, c, width, height, width); ImageView img = (ImageView) findViewById(R.id.imageView1); img.setImageBitmap(bmp); img.setScaleType(ScaleType.FIT_CENTER); ``` And here is my `drawCircles()` method: ``` private void drawCircles(Paint paint, Canvas c, int width, int height, int radius) { paint.setARGB(255, 255 , 10, 21); paint.setStrokeWidth(10); paint.setAntiAlias(true); paint.setStrokeCap(Paint.Cap.BUTT); paint.setStyle(Paint.Style.STROKE); if(width < height && radius == 0){ radius = width/2; height = width; } else if (radius == 0){ radius = height/2; width = height; } Paint paint2 = new Paint(); paint2.setARGB(255, 255 , 10, 21); paint2.setStrokeWidth(10); paint2.setAntiAlias(true); paint2.setStrokeCap(Paint.Cap.BUTT); paint2.setStyle(Paint.Style.STROKE); c.drawCircle(width/2, height/2, radius-10, paint); c.drawCircle(width/2, height/2, 50, paint2); } ``` I don't know why but I get only one circle, the small one (the one drawn with `paint2`). What can be the reason?

Original source