Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解 (6)

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

接下来就让文字的中心落在参考点上:

// 将文字的中心定位在参考点上 y += Y_SPACE; canvas.drawPoint(x, y, mPointPaint); canvas.drawText(str, x, y - ascent / 2 - descent / 2, mTextPaint);

效果图如下,仔细看参考点(红点)和文字的位置:

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

利用Paint.setShader()(着色器)绘制渐变色

使用 setShader() 方法可以添加渐变颜色也可以使用图片作为背景,其参数是一个Shader类,传入不同的Shader子类可以实现不同的渐变效果或者添加背景图片,其子类有一下几种:

LinearGradient:线性渐变

RadialGradient:放射状渐变

SweepGradient:扫描渐变

BitmapShader:添加背景图片

ComposeShader:多种Shader组合

上面接个Shader的子类在使用方式上都差不多,这里只用LinearGradient为例说明一下,并注意对LinearGradient构造器的最后一个参数传入不同的参数对应的效果图:

/* Shader 渐变 */ y = 100; Shader shader = new LinearGradient(x - 50, y - 80, x + 50, y + 80, Color.parseColor("#FFCCBB"), Color.parseColor("#FF0000"), Shader.TileMode.CLAMP); mTextPaint.setShader(shader); canvas.drawRect(x - 500, y - 80, x + 500, y + 80, mTextPaint); y += 3 * Y_SPACE; Shader shader1 = new LinearGradient(x - 50, y - 80, x + 50, y + 80, Color.parseColor("#FFCCBB"), Color.parseColor("#FF0000"), Shader.TileMode.REPEAT); mTextPaint.setShader(shader1); canvas.drawRect(x - 500, y - 80, x + 500, y + 80, mTextPaint); y += 3 * Y_SPACE; Shader shader2 = new LinearGradient(x - 50, y - 80, x + 50, y + 80, Color.parseColor("#FFCCBB"), Color.parseColor("#FF0000"), Shader.TileMode.MIRROR); mTextPaint.setShader(shader2); canvas.drawRect(x - 500, y - 80, x + 500, y + 80, mTextPaint);

效果图如下:

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

除了以上这些,Paint的用法还有很多很多,一时半会也列不完,博主在这也只能抛砖引玉,感兴趣的朋友可查看官方API自行探索。

最后想说的是,本系列文章为博主对Android知识进行再次梳理,查缺补漏的学习过程,一方面是对自己遗忘的东西加以复习重新掌握,另一方面相信在重新学习的过程中定会有巨大的新收获,如果你也有跟我同样的想法,不妨关注我一起学习,互相探讨,共同进步!

参考文献:

*Android Developers:https://developer.android.com/index.html*

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwygzd.html