android圆形头像实现

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

 

demo实例

    基本上能满足一般的圆形头像功能实现
    其中包括控件的大小,控件四个角的弧度控制以及外圈的颜色和宽度
    现在我们看看具体的使用:

  <wxd.demo.demomaster.view.RotatingCircleView
            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    代表圆形的展示方式,分五种

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

            <enum name="all" value="0" />
            <enum name="top_left" value="1" />
            <enum name="top_right" value="2" />
            <enum name="bottom_left" value="3" />
            <enum name="bottom_right" value="4" />

  具体的使用方式就是这么简单,下面我们看看具体是怎么实现的
    首先我们需要知道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的实例化那里我们就已经获取到了图片bitmap的必要信息,此时经过这些操作,bitmap的信息已经被携带在了paint里面,下面我们就可以利用携带了bitmap信息的paint任意画图,那么圆形头像的实现就很简单了,代码:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值