美文网首页
android圆形头像实现

android圆形头像实现

作者: WhenMeet | 来源:发表于2019-01-05 14:43 被阅读35次

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


    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可以设置给paint,代码:

    imgPaint.setShader(bitmapShader);
    

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

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

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

    相关文章

      网友评论

          本文标题:android圆形头像实现

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