2015-11-14 2 views
1

Я хотел бы знать, как я могу вставить серая граница вне кругового изображения.Как я могу вставить границу вне моего кругового изображения?

Я использую этот код для создания кругового imageviews:

public Bitmap transform(Bitmap source) { 
     int size = Math.min(source.getWidth(), source.getHeight()); 

     int x = (source.getWidth() - size)/2; 
     int y = (source.getHeight() - size)/2; 

     Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size); 
     if (squaredBitmap != source) { 
      source.recycle(); 
     } 

     Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig()); 

     Canvas canvas = new Canvas(bitmap); 
     Paint paint = new Paint(); 
     BitmapShader shader = new BitmapShader(squaredBitmap, 
     BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP); 
     paint.setShader(shader); 
     paint.setAntiAlias(true); 

     float r = size/2f; 
     canvas.drawCircle(r, r, r, paint); 

     squaredBitmap.recycle(); 
     return bitmap; 
    } 

Я попытался вставить границу, используя эти строки:

paint.setStrokeWidth(4); 
paint.setStyle(Style.STROKE); 

Но это не сработало, появились границы, но изображение исчезло.

+0

вы решить вашу проблему? – Androider

+0

Нет, я не мог понять ваш код, я не использую рисованное изображение для загрузки внутри изображения, я получаю изображение с URL-адреса, используя пикассо. У меня возникли некоторые проблемы с попыткой реализовать ваш код для моего использования, чтобы загрузить изображение, которое я использую в этой строке: load («URL») .transform (новый CircleTransform()). В (groupAvatar); –

+0

да, я получил вас, в основном вы можете получить растровое изображение с вашего изображения, а затем попробуйте поставить растровое изображение, которое я получаю от рисования. Ничего особенного. – Androider

ответ

1

Это может быть достигнуто следующим образом:

//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); 
Смежные вопросы