Android自定义View之不规则图形填充

最近项目遇到了一个统计图的需求,折线图部分需要填充图案,这就涉及到了一个不规则图形填充的问题,考虑了几种方法,最后还是选了一种我觉得最简单的方案——利用Shader类。

先上一下效果图,十分简单的线,我用了贝塞尔曲线来表示完全可以填充不规则的直线和曲线。

Android自定义View之不规则图形填充


接下来上代码来分析。代码超级简单,只有几行


Android自定义View之不规则图形填充

其中onDraw部分几乎不用看,我用贝塞尔画了一条不规则的曲线而已,重点是在init()方法,创建一个Shader对象,其中BitmapShader构造器的第二个和第三个参数分别是图片的横向和纵向的填充方式,TileMode是个枚举类,有三个枚举,分别是CLAMP, REPEAT, MIRROR。其中,CLAMP是多出的部分利用bitmap的边缘色填充,REPEAT是重复填充,MIRROR是镜像填充。很好理解,自己试验一下就可以发现区别。