title: How to add a border around RoundedImageView custom ImageView implementation
body: <p><strong>I need a detail explanation of how it's being done. I want the class below to be modified with the code.</strong> </p>
  
  <p>I want to add a white border/stroke around a rounded image view implementation. I don't want to do it in XML. I want it to be done programmatically by modifying this class. I am not sure how to get it done. Everything I have tried so far creates something like a square border, So I need your help. 
  The addWhiteBorder function was what I was trying to use but it doesn't seem to work well. </p>
  
  <pre><code>public class RoundedImageView extends ImageView {
  
  public RoundedImageView(Context context) {
      super(context);
      // TODO Auto-generated constructor stub
  }
  
  public RoundedImageView(Context context, AttributeSet attrs) {
      super(context, attrs);
  }
  
  public RoundedImageView(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
  }
  
  @Override
  protected void onDraw(Canvas canvas) {
  
      Drawable drawable = getDrawable();
  
      if (drawable == null) {
          return;
      }
  
      if (getWidth() == 0 || getHeight() == 0) {
          return;
      }
      Bitmap b =  ((BitmapDrawable)drawable).getBitmap() ;
      Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
  
      int w = getWidth(), h = getHeight();
  
  
      Bitmap roundBitmap =  getCroppedBitmap(bitmap, w);
  
  
  
      canvas.drawBitmap(roundBitmap, 0,0, null);
  
  
  }
  private Bitmap addWhiteBorder(Bitmap bmp, int borderSize) {
      Bitmap bmpWithBorder = Bitmap.createBitmap(bmp.getWidth() + borderSize * 2, bmp.getHeight() + borderSize * 2, bmp.getConfig());
      Canvas canvas = new Canvas(bmpWithBorder);
      canvas.drawColor(Color.RED);
      canvas.drawBitmap(bmp, borderSize, borderSize, null);
      return bmpWithBorder;
  }
  
  public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
      Bitmap sbmp;
      if(bmp.getWidth() != radius || bmp.getHeight() != radius)
          sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
      else
          sbmp = bmp;
      Bitmap output = Bitmap.createBitmap(sbmp.getWidth(),
              sbmp.getHeight(), Bitmap.Config.ARGB_8888);
      Canvas canvas = new Canvas(output);
  
      final int color = 0xffa19774;
      final Paint paint = new Paint();
      final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());
  
      paint.setAntiAlias(true);
      paint.setFilterBitmap(true);
      paint.setDither(true);
      canvas.drawARGB(0, 0, 0, 0);
      paint.setColor(Color.parseColor("#BAB399"));
      canvas.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f,
              sbmp.getWidth() / 2+0.1f, paint);
      paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
  
  
      canvas.drawBitmap(sbmp, rect, rect, paint);
  
  
      return output;
  }
  
  }
  </code></pre>