首页 > 代码库 > 圆形图片

圆形图片

imageview一般情况下为矩形,如果需要现实为圆角或者圆形还需要进行一番处理,这里自定义了一个imageview,可以修改角度来显示圆角图片

  1 import android.content.Context;  2 import android.graphics.Bitmap;  3 import android.graphics.Bitmap.Config;  4 import android.graphics.Canvas;  5 import android.graphics.Paint;  6 import android.graphics.PorterDuff.Mode;  7 import android.graphics.PorterDuffXfermode;  8 import android.graphics.Rect;  9 import android.graphics.RectF; 10 import android.util.AttributeSet; 11 import android.widget.ImageView; 12  13 /** 14 *  类名 CircleImageView 15 *  @author 王洪贺<br/> 16 *    圆形图像类 17 *    创建日期 2014年7月14日 18 */ 19 public class CircleImageView extends ImageView { 20  21     /**默认显示的图像*/ 22     private int defaultImageRes = R.drawable.no_image; 23     /**网络图像地址*/ 24     private String url; 25     /**上下文*/ 26     private Context mContext; 27  28     public CircleImageView(Context context) { 29         super(context); 30         init(context); 31     } 32  33     public CircleImageView(Context context, AttributeSet attrs, int defStyle) { 34         super(context, attrs, defStyle); 35         init(context); 36     } 37  38     public CircleImageView(Context context, AttributeSet attrs) { 39         super(context, attrs); 40         init(context); 41     } 42  43     public void init(Context context) { 44         this.mContext = context; 45     } 46  47     public void setDefault(int resId) { 48         defaultImageRes = resId; 49     } 50  51     public void setUrl(String imageUrl) { 52         url = imageUrl; 53     } 54  55     @Override 56     public void setImageBitmap(Bitmap bm) { 57         if (bm != null) { 58             bm = toRoundBitmap(bm); 59             // bitmap = bm; 60         } 61         super.setImageBitmap(bm); 62     } 63  64     @Override 65     public void setImageResource(int resId) { 66         super.setImageResource(resId); 67  68     } 69  70     /** 71      * 转换图片成圆形 72      *  73      * @param bitmap 74      *            传入Bitmap对象 75      * @return 76      */ 77     public Bitmap toRoundBitmap(Bitmap bitmap) { 78  79         Bitmap output = Bitmap 80                 .createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); 81         Canvas canvas = new Canvas(output); 82  83         final int color = 0xff424242; 84         final Paint paint = new Paint(); 85         final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 86         final RectF rectF = new RectF(rect); 87         final float roundPx = 90; 88  89         paint.setAntiAlias(true); 90         canvas.drawARGB(0, 0, 0, 0); 91         paint.setColor(color); 92         canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 93  94         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 95         canvas.drawBitmap(bitmap, rect, rect, paint); 96  97         return output; 98     } 99 100 }