블로그 이미지
흰색앵초

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2014. 10. 17. 11:50 프로그래밍/Android

이번 포스팅에서는 이미지를 Bitmap으로 만든 후 테두리를 라운드처리하는 방법을 알아보겠습니다.
소스를 보시면....


import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.BitmapFactory;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

	LinearLayout linearLayout1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		linearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1);
		
		ImageView iv1 = new ImageView(getApplicationContext());
		
		Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.img1);
		Bitmap bm2 = getRoundedCornerBitmap(bm1);

		iv1.setImageBitmap(bm2);
		linearLayout1.addView(iv1);
		
	}
	
	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 = 50; // 테두리 곡률 설정
	 
	    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;
	  }
	
	
}

소스는 BitmapFactory를 이용해서 이미지를 Bitmap화 한다음 아래의 getRoundedCornerBitmap을 이용해서 테두리를 라운딩 처리해주는 방식으로 처리되어있습니다. 라운드 처리한 Bitmap을 다시 ImageView에 적용해서 레이아웃에 추가해 보여주는 식의 간단한 예제입니다. 혹시나 필요하신 분이 있으면 도움이 되셨기를 바랍니다. 슝~

참조 : Rounded corner bitmaps on Android

비슷한 포스팅 : ImgaeView 테두리 라운드처리

posted by 흰색앵초