android 圆形头像方案,android圆形头像实现

今天我们学习圆形头像的实现原理,先上图

demo实例

基本上能满足一般的圆形头像功能实现

其中包括控件的大小,控件四个角的弧度控制以及外圈的颜色和宽度

现在我们看看具体的使用:

android:id="@+id/rotating_circle_view"

android:layout_width="100dp"

android:layout_height="100dp"

android:src="@mipmap/pic"

app:circle_color="#f00"

app:circle_kind="all"

app:circle_width="2dp" />

其中有三个自定义属性

app:circle_color 代表外圈的颜色

app:circle_width 代表外圈的宽度

app:circle_kind 代表圆形的展示方式,分五种

从上面的图中我们是可以看出来的,取值分别为:

具体的使用方式就是这么简单,下面我们看看具体是怎么实现的

首先我们需要知道BitmapShader和Matrix这俩个东西

具体的作用说下,BitmapShader用于设置图片平铺方式,分三种:

:CLAMP(拉伸)、MIRROR(镜像)、REPETA(重复)

这里借用别人的图片一下看看是什么样子

拉伸

镜像

重复

大致表达的意思就是当图片大小不足控件的大小时,图片以外空白区域如何展示

该案例里面我们使用了CLAMP功能,具体代码实例:

bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);

Matrix 这个本身叫做矩阵,放在图片处理中可以用于图片的拉伸,缩放,倾斜等一些操作,当我们的图片不满我们的控件时,我们可以控件图片的大小以适应控件,大概就是这个作用。

该案例里面我们用了俩个功能,缩放和位移,代码示意:

matrix.setScale(scale, scale);

matrix.postTranslate((int) (dx + 0.5f) + borderWidth, (int) (dy + 0.5f) + borderWidth);

当这俩种各种设置好之后,matrix可以设置给BitmapShader,代码:

bitmapShader.setLocalMatrix(matrix);

bitmapShader可以设置给paint,代码:

imgPaint.setShader(bitmapShader);

从bitmapShader的实例化那里我们就已经获取到了图片bitmap的必要信息,此时经过这些操作,bitmap的信息已经被携带在了paint里面,下面我们就可以利用携带了bitmap信息的paint任意画图,那么圆形头像的实现就很简单了,代码:

canvas.drawCircle(getWidth() / 2, getHeight() / 2, imgRadius, imgPaint);

看见了,就是利用最简单的画圆就可以实现我们的圆形头像,那么外边圆这里就不用细说了吧,再花一个半径比这个大一点的圆即可,好了,今天的自定义view就学习到这,代码实例见:

代码点我1-3

你可能感兴趣的:(android,圆形头像方案)