Changing Image as Rounded Corner

后端 未结 4 884
青春惊慌失措
青春惊慌失措 2020-12-17 03:34

I\'ve one listview with some items. In my listview i\'ve using custom adapter for displaying the items with images. My images in items are coming from JSON My i

相关标签:
4条回答
  • 2020-12-17 03:38
    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
    
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                .getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
    
        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        final float roundPx = pixels;
    
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
    
        return output;
    }
    
    0 讨论(0)
  • 2020-12-17 03:41
    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
            bitmap.getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
    
        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        final float roundPx = 12;
    
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
    
        return output;
      }
    

    code extracted from http://ruibm.com/?p=184

    0 讨论(0)
  • 2020-12-17 03:45

    Check out this previous thread, brilliant answer on how to get rounded edges for bitmap images.

    0 讨论(0)
  • 2020-12-17 03:47
    Bitmap myCoolBitmap = ... ; // <-- Your bitmap you want rounded    
    int w = myCoolBitmap.getWidth(), h = myCoolBitmap.getHeight();
    

    We have to make sure our rounded corners have an alpha channel in most cases

    Bitmap rounder = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(rounder);    
    

    We're going to apply this paint eventually using a porter-duff xfer mode. This will allow us to only overwrite certain pixels. RED is arbitrary. This could be any color that was fully opaque (alpha = 255)

    Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    xferPaint.setColor(Color.RED);
    

    We're just reusing xferPaint to paint a normal looking rounded box, the 20.f is the amount we're rounding by.

    canvas.drawRoundRect(new RectF(0,0,w,h), 20.0f, 20.0f, xferPaint);

    Now we apply the 'magic sauce' to the paint

    xferPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
    Now apply this bitmap ontop of your image:
    
    canvas.drawBitmap(myCoolBitmap, 0,0, null);
    canvas.drawBitmap(rounder, 0, 0, xferPaint);
    
    0 讨论(0)
提交回复
热议问题