기본적으로 가장 이해하기 쉬운 방법은 두개의 뷰를 겹쳐서 나중에 그려지는 이미지를 배경색깔과 동일하게 하는 방법이 있습니다.
하지만, 위 방법은 배경 색깔이 단일할때만 가능합니다.
아래 사이트에 정말 좋은 샘플이 있어 공유 합니다.
Drawable 자체를 타원형태로 그리는 샘플 소스 입니다.
안드로이드의 Drawable을 이용해서 이미지가 draw될때 이미지를 라운딩 처리해서 그리는 방법이다.
public class RoundedAvatarDrawable extends Drawable { private final Bitmap mBitmap; private final Paint mPaint; private final RectF mRectF; private final int mBitmapWidth; private final int mBitmapHeight; public RoundedAvatarDrawable(Bitmap bitmap) { mBitmap = bitmap; mRectF = new RectF(); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); final BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mPaint.setShader(shader); mBitmapWidth = mBitmap.getWidth(); mBitmapHeight = mBitmap.getHeight(); } @Override public void draw(Canvas canvas) { canvas.drawOval(mRectF, mPaint); } @Override protected void onBoundsChange(Rect bounds) { super.onBoundsChange(bounds); mRectF.set(bounds); } @Override public void setAlpha(int alpha) { if (mPaint.getAlpha() != alpha) { mPaint.setAlpha(alpha); invalidateSelf(); } } @Override public void setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } @Override public int getIntrinsicWidth() { return mBitmapWidth; } @Override public int getIntrinsicHeight() { return mBitmapHeight; } public void setAntiAlias(boolean aa) { mPaint.setAntiAlias(aa); invalidateSelf(); } @Override public void setFilterBitmap(boolean filter) { mPaint.setFilterBitmap(filter); invalidateSelf(); } @Override public void setDither(boolean dither) { mPaint.setDither(dither); invalidateSelf(); } public Bitmap getBitmap() { return mBitmap; } }
## 이블로그는 어디까지는 찾았던 부분을 잊지 않기 위해 올려놓은 것 입니다.
내용이 부실해도 이해해 주시길 바랍니다.
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android] OnGlobalLayoutListener: deprecation and compatibility (0) | 2015.11.10 |
---|---|
[Android] android.support.v4.app.fragment.getallowreturntransitionoverlap (0) | 2015.11.10 |
[Android] 특정 Layout 위치에 Fragment를 변환 (0) | 2015.11.06 |
[Android] xml 소스 폴더 관리 (0) | 2015.11.04 |
[Android] 디자인 관련 괜찮은 사이트 (0) | 2015.11.04 |