Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make an image fit into a circular frame in android

Tags:

I have a ListView in which there is an ImageView, the image in the ImageView gets loaded dynamically after its fetched from the server. Now, I want these images, of any size, to fit into a circular frame, how to do that? Here's a sample pic of what I want

enter image description here

like image 607
Sanghita Avatar asked Dec 27 '12 07:12

Sanghita


People also ask

How do I make an image circular in Android?

Simply put a circular_crop. png in your drawable folder which is in the shape of your image dimensions (a square in my case) with a white background and a transparent circle in the center. You can use this image if you have want a square imageview.


1 Answers

With the help of previous answer I came up with this solution.Hope it help others:

import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory;  import android.graphics.Canvas;  import android.graphics.Paint; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.os.Bundle; import android.widget.ImageView;    public class CircleImage extends Activity {  /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.circle_layout);     ImageView img1 = (ImageView) findViewById(R.id.imageView1);     Bitmap bm = BitmapFactory.decodeResource(getResources(),             R.drawable.hair_four);     Bitmap resized = Bitmap.createScaledBitmap(bm, 100, 100, true);     Bitmap conv_bm = getRoundedRectBitmap(resized, 100);     img1.setImageBitmap(conv_bm);     // TODO Auto-generated method stub }  public static Bitmap getRoundedRectBitmap(Bitmap bitmap, int pixels) {     Bitmap result = null;     try {         result = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);         Canvas canvas = new Canvas(result);          int color = 0xff424242;         Paint paint = new Paint();         Rect rect = new Rect(0, 0, 200, 200);          paint.setAntiAlias(true);         canvas.drawARGB(0, 0, 0, 0);         paint.setColor(color);         canvas.drawCircle(50, 50, 50, paint);         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));         canvas.drawBitmap(bitmap, rect, rect, paint);      } catch (NullPointerException e) {     } catch (OutOfMemoryError o) {     }     return result; }   } 
like image 161
Sanghita Avatar answered Sep 19 '22 12:09

Sanghita