自定义圆形ImageView头像,可设置边框和颜色,圆角方形

获取bitmap:

privateBitmapgetBitmap(Drawable drawable){

if(drawable instanceof BitmapDrawable){                     //判断drawable类型,如果是drawable直接返回

return((BitmapDrawable) drawable).getBitmap();

}else if(drawable  instanceof    ColorDrawable){          //如果是颜色

Rect rect=drawable.getBounds();                                //获取drawable大小

intwidth=rect.right-rect.left;                                          //宽

intheight=rect.bottom- rect.top;                                   //高

intcolor=((ColorDrawable) drawable).getColor();         //颜色

Bitmap bitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);     //用以上参数做一个bitmap

Canvas canvas=newCanvas(bitmap);                           

canvas.drawARGB(Color.alpha(color),Color.red(color),Color.green(color),Color.blue(color));//使用Canves填充

return bitmap;

}else{

return null;

}

}


使用获取到的bitmap,重写onDraw()方法,调用画圆的方法而不是画方形的方法:


重写onDraw()方法

到此已经是圆形了。

添加边框:


添加边框

设置矩阵时不指定bitmap缩放中心会出现这种情况:


bitmap取到的部分不对

给矩阵指定bitmap的缩放中心,我这里设置为bitmap的中心:


设置矩阵的缩放中心


这里更正上一点的说法:后面两个参数是设置矩阵的起点,因为imageView的矩阵默认起点为左上角,因为边框占据了一定的宽度因此起点也应该往下往右移动:


正确理解为为matrix的左上角的起点


矩阵示意图

图中红线交叉点的坐标为(borderWidth,borderWidth),图片左上角就是imageVIew的(0,0),如不设置坐标,默认是(0,0),效果如下


不设置坐标

其实就是图片左上偏移了

是不是好看合理了许多呢

矩阵参考了(在此感谢):http://blog.csdn.net/cquwentao/article/details/51445269

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容