package com.storm.ui;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.ImageView;/**
* 圆角图片
*
* @author Chao
* */public class RoundedCornerImageView extends ImageView {
private final float density = getContext().getResources()
.getDisplayMetrics().density;
private float roundness;public RoundedCornerImageView(Context context) {
super(context);init();
}public RoundedCornerImageView(Context context, AttributeSet attrs) {
super(context, attrs);init();
}public RoundedCornerImageView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);init();
}@Override
public void draw(Canvas canvas) {
final Bitmap composedBitmap;
final Bitmap originalBitmap;
final Canvas composedCanvas;
final Canvas originalCanvas;
final Paint paint;
final int height;
final int width;width = getWidth();
height = getHeight();
composedBitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
originalBitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);composedCanvas = new Canvas(composedBitmap);
originalCanvas = new Canvas(originalBitmap);paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.BLACK);super.draw(originalCanvas);
composedCanvas.drawARGB(0, 0, 0, 0);
composedCanvas.drawRoundRect(new RectF(0, 0, width, height),
this.roundness, this.roundness, paint);paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
composedCanvas.drawBitmap(originalBitmap, 0, 0, paint);
canvas.drawBitmap(composedBitmap, 0, 0, new Paint());
}public float getRoundness() {
return this.roundness / this.density;
}public void setRoundness(float roundness) {
this.roundness = roundness * this.density;
}
private void init() {
setRoundness(5);
}
}
图片圆角处理