美文网首页
自定义圆形ImageView头像,可设置边框和颜色,圆角方形

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

作者: 没风的地方 | 来源:发表于2017-12-08 11:34 被阅读29次

    获取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

    相关文章

      网友评论

          本文标题:自定义圆形ImageView头像,可设置边框和颜色,圆角方形

          本文链接:https://www.haomeiwen.com/subject/zhzsixtx.html