[android] 일반적이지 않은 사진(이미지) 모양 만들기 #2
출처 : http://blog.stylingandroid.com/archives/2660
이전 글 : http://aroundck.tistory.com/2971
Shader 는 Canvas 에 그릴 때 fill style 을 정의할 때 사용되며, Paint 객체에 전달하여 사용된다.
이 방법은 BitmapShader 를 이용하며, round corner radius 를 bitmap 의 1/8 사이즈로 한다.
그리고 Canvas.drawRoundRect 를 이용하여 기존 이미지 형태의 rounded rect 를 대체한다.
public Bitmap processImage(Bitmap bitmap) {
Bitmap bmp;
bmp = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
float radius = Math.min(bitmap.getWidth(), bitmap.getHeight()) / RADIUS_FACTOR;
Canvas canvas = new Canvas(bmp);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(shader);
RectF rect = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
canvas.drawRoundRect(rect, radius, radius, paint);
return bmp;
}
전달된 bitmap 과 같은 사이즈의 bitmap 을 만들고, BitmapShader 에 전달된 bitmap 을 assign 한다.
둥근 사각형을 만들기 위해 radius 를 구하여 roundRect 를 그릴 때 BitmapShader 를 포함한 Paint 를 전달하여 그린다.
이 방법은 이전 방법에 비해 우선 Bitmap 하나가 줄었고, ( memory 절약 )
Rounded Rect image 를 그릴 필요가 없으며,
전달되는 bitmap size 에도 유기적으로 대응 가능하다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
android largeheap (0) | 2015.06.06 |
---|---|
iml 파일이 뭔가요? ( git repository 에 올리는 게 맞나요? ) (0) | 2015.06.04 |
[android] View Separator 만드는 방법들 (0) | 2015.04.12 |
[android] 일반적이지 않은 사진(이미지) 모양 만들기 #1 - 모서리가 둥근 사각형 (0) | 2015.04.11 |
No repository found error in Installing ADT in eclipse (0) | 2015.03.28 |
댓글