自定义View起步:Canvas之绘制文字
2017-04-13 21:45
375 查看
上一章节讲解了,Canvas如何绘制图片。本章节将会讲解如何利用Canvas绘制文字。绘制文字的方法比较简单,相信今天这一章节都可以看得懂。首先我们来看一下官网为我们提供了那些API来提供给我们使用。
第一类:基本的文字绘制
第二类:对文字进行排序
第三类:按照Path路径来绘制文字
通过上面常用方法的参数也可看出,绘制文字也是需要画笔的,而且文字的大小,颜色,字体,对齐方式都是由画笔控制的。不过嘛这里仅简单介绍几种常用方法(反正挖坑多了也不怕),具体在讲解Paint时再详细讲解。使用Paint可以绘制出更佳酷炫效果的文字出来。
Paint文本相关常用方法表
第一类(drawText)
第一类可以指定文本开始的位置,可以截取文本中部分内容进行绘制。其中x,y两个参数是指定文本绘制两个基线,示例:
PS: 图中字符串下方的红线是基线y,基线x未在图中画出。
当然啦,除了能指定绘制文本的起始位置,还能只取出文本中的一部分内容进行绘制。截取文本中的一部分,对于String和CharSequence来说只指定字符串下标start和end位置(注意:0<= start < end < str.length())
另外,对于字符数组char[]我们截取字符串使用起始位置(index)和长度(count)来确定。同样,我们指定index为1,count为3,那么最终截取到的字符串是"BCD"。其实就是从下标位置为1处向后数3位就是截取到的字符串,示例:
第二类方法:(drawTextRun)
这个方法是API23之后添加的,他可以根据传入的boolean值来决定是否排序,排序的内容由截取的字符串决定。示例:
第三类(drawTextOnPath)
第三类方法顾名思义是可以根据Path路径来绘制文字。这样我们就可以绘制出各种形状排列的文字。示例:
文字的绘制就先讲到这里,我们知道绘制文字关键的两个类,分别是Pain画笔和Path路径,这两个类还有很多方法供我们使用,通过这两个类的设置可以绘制出更多复杂和绚丽的效果。后面我会着重详细讲解这两个类的使用。喜欢我的文章可以扫描下方的二维码关注我的微信公众号,获得更多,更及时的文章推送。
第一类:基本的文字绘制
第二类:对文字进行排序
第三类:按照Path路径来绘制文字
通过上面常用方法的参数也可看出,绘制文字也是需要画笔的,而且文字的大小,颜色,字体,对齐方式都是由画笔控制的。不过嘛这里仅简单介绍几种常用方法(反正挖坑多了也不怕),具体在讲解Paint时再详细讲解。使用Paint可以绘制出更佳酷炫效果的文字出来。
Paint文本相关常用方法表
第一类(drawText)
第一类可以指定文本开始的位置,可以截取文本中部分内容进行绘制。其中x,y两个参数是指定文本绘制两个基线,示例:
/** * 第一种方法,绘制文字,后边的200,500参数为绘制文字的基准线的位置 *200表示文字左侧距离Group位置,500表示文字底部距离Group顶部的位置 */ String tr = "ABCDEFJHK"; canvas.drawText(tr,200,300,mPaint);
PS: 图中字符串下方的红线是基线y,基线x未在图中画出。
当然啦,除了能指定绘制文本的起始位置,还能只取出文本中的一部分内容进行绘制。截取文本中的一部分,对于String和CharSequence来说只指定字符串下标start和end位置(注意:0<= start < end < str.length())
/** * 第二种方法,绘制文字,增加了两个参数,1和3表示截取字符串 * 从第1个开始截取到第三个,不包括第三个 */ mPaint.setColor(Color.RED); canvas.drawText(tr,1,3,200,400,mPaint);
另外,对于字符数组char[]我们截取字符串使用起始位置(index)和长度(count)来确定。同样,我们指定index为1,count为3,那么最终截取到的字符串是"BCD"。其实就是从下标位置为1处向后数3位就是截取到的字符串,示例:
/** * 第三种方法,绘制字符串数组,两个参数,1和3表示截取字符串 * 从第1个开始截取三个 */ mPaint.setColor(Color.BLUE); char[] chars = tr.toCharArray(); canvas.drawText(chars,1,3,200,500,mPaint);
第二类方法:(drawTextRun)
这个方法是API23之后添加的,他可以根据传入的boolean值来决定是否排序,排序的内容由截取的字符串决定。示例:
/** * 第五种方法,为字符串排序 * API23之后引入的方法 * 前两个0,3表示截取0-3的字符串,后两个0-3表示从0-3开始排序必须和前边两个参数保持一致 * true表示排序,false表示不排序 * */ mPaint.setColor(Color.BLACK); canvas.drawTextRun(str,0,3,0,3,200,950,true,mPaint); canvas.drawTextRun(str,0,3,0,3,200,1000,false,mPaint);
第三类(drawTextOnPath)
第三类方法顾名思义是可以根据Path路径来绘制文字。这样我们就可以绘制出各种形状排列的文字。示例:
/** * 第六种方法,按照规定的路径绘制字符串 * tr:绘制的字符串 * mPath绘制的路径, * 10,X轴的偏移量 * -10,Y轴的偏移量 * mPaint画笔 * */ //绘制一条线 mPath = new Path(); mPath.moveTo(200,1100); mPath.lineTo(800,1400); mPaint.setColor(Color.CYAN); canvas.drawTextOnPath(tr,mPath,10,-10,mPaint); //绘制一个圆 String s = "ABCDEFGHIJKLMNOPQRST"; Path path = new Path(); path.addCircle(700,500,200, Path.Direction.CW); canvas.drawTextOnPath(s,path,0,-10,mPaint);
文字的绘制就先讲到这里,我们知道绘制文字关键的两个类,分别是Pain画笔和Path路径,这两个类还有很多方法供我们使用,通过这两个类的设置可以绘制出更多复杂和绚丽的效果。后面我会着重详细讲解这两个类的使用。喜欢我的文章可以扫描下方的二维码关注我的微信公众号,获得更多,更及时的文章推送。
相关文章推荐
- 自定义View起步:Canvas之绘制基本形状
- 自定义View学习笔记07—Canvas绘制文字
- 自定义View起步:Canvas之绘制图片
- 自定义View,在Canvas上绘制几何图形
- 使用canvas与Paint在View中居中绘制文字
- 自定义View绘制文字居中显示
- Android自定义View高级(四)-Canvas之图片文字
- 转自大神整理的文章-安卓自定义View进阶-canvas绘制图形
- 使用canvas与Paint在View中居中绘制文字
- Qt自定义委托在QTableView中绘制控件、图片、文字
- 安卓自定义View进阶-Canvas之绘制图形
- SupSurfaceCanvasView--快速实现自定义绘制SurfaceView帮助类
- Android自定义View高级(二)-Canvas绘制图形
- 自定义View之canvas绘制时钟
- 安卓自定义View进阶-Canvas之图片文字
- Qt自定义委托在QTableView中绘制控件、图片、文字
- Android自定义View---Canvas绘制贝塞尔曲线
- 安卓自定义View进阶-Canvas(3)图片与文字
- 使用canvas与Paint在View中居中绘制文字
- Android自定义View(五)_Canvas之绘制基本形状