android 圆角头像带白色边框,自定义圆形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()方法,调用画圆的方法而不是画方形的方法:

ab13ca79aac2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

重写onDraw()方法

到此已经是圆形了。

添加边框:

ab13ca79aac2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

添加边框

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

ab13ca79aac2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

bitmap取到的部分不对

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

ab13ca79aac2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

设置矩阵的缩放中心

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

ab13ca79aac2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

ab13ca79aac2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

矩阵示意图

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

ab13ca79aac2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

不设置坐标

其实就是图片左上偏移了

是不是好看合理了许多呢

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值