接下来就让文字的中心落在参考点上:
// 将文字的中心定位在参考点上 y += Y_SPACE; canvas.drawPoint(x, y, mPointPaint); canvas.drawText(str, x, y - ascent / 2 - descent / 2, mTextPaint);效果图如下,仔细看参考点(红点)和文字的位置:
利用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);效果图如下:
除了以上这些,Paint的用法还有很多很多,一时半会也列不完,博主在这也只能抛砖引玉,感兴趣的朋友可查看官方API自行探索。
最后想说的是,本系列文章为博主对Android知识进行再次梳理,查缺补漏的学习过程,一方面是对自己遗忘的东西加以复习重新掌握,另一方面相信在重新学习的过程中定会有巨大的新收获,如果你也有跟我同样的想法,不妨关注我一起学习,互相探讨,共同进步!
参考文献:
*Android Developers:https://developer.android.com/index.html*