目前为止,已经掌握了两种制作圆形头像的方法,一种是利用 PorterDuffXfermode
,一种是 Shader
工具。至于选择哪一种方法因人而异,但幸运的是这两种方法的使用都并不难。好了,现在介绍一下如何利用 BitmapShader
制作圆形头像,为了演示,我做了一个 Demo ,可以自定义要显示的图片,边框颜色,边框宽度,效果如下图所示。
BitmapShader 的简单介绍
关于 Shader
是什么,Shader
的种类有哪几种以及如何使用不属于本文范畴,对这方面不是很了解的同学,建议先去学习一下 Shader
的基本使用。
BitmapShader
主要的作用就是 通过 Paint
对象,对 画布进行指定的 Bitmap 填充
,实现一系列效果,可以有以下三种模式进行选择
CLAMP - 拉伸,这里拉伸的是图片的最后一个元素,不断地重复,这个效果,在图片比较小,而所要画的面积比较大的时候会比较明显。
REPEAT - 重复,横向纵向不断地重复,不同于上一模式,这种模式在图片比较小不能满足要求是,会在横向纵向不断重复绘制图形。
MIRROR - 翻转,这种模式和 REPEAT 是类似的,只不过这里的重复是翻转着重复,和折纸的效果差不多。
而我们将要使用的是 CLAMP 模式,因为只要我们对图形的大小进行控制,就可以避免图像进行拉伸。
具体实现
为了自定义 图像,边框宽度和颜色,我们首先在 res/values 目录下,新建一个 attrs.xml文件,里面要书写的内容如下所示
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyCustomView">
<attr name="mborder_color" format="color"></attr>
<attr name="mborder_width" format="dimension"></attr>
<attr name="msrc" format="reference"></attr>
</declare-styleable>
</resources>
当然,在这里还可以添加一些其他的特性。既然定义了我们想要使用的特