上一章节讲解了,Canvas如何绘制图片。本章节将会讲解如何利用Canvas绘制文字。绘制文字的方法比较简单,相信今天这一章节都可以看得懂。首先我们来看一下官网为我们提供了那些API来提供给我们使用。

第一类:基本的文字绘制

android paint绘制文字居中显示_Android自动以控件

第二类:对文字进行排序

android paint绘制文字居中显示_绘制文字_02

第三类:按照Path路径来绘制文字

android paint绘制文字居中显示_自定义view_03

通过上面常用方法的参数也可看出,绘制文字也是需要画笔的,而且文字的大小,颜色,字体,对齐方式都是由画笔控制的。不过嘛这里仅简单介绍几种常用方法(反正挖坑多了也不怕),具体在讲解Paint时再详细讲解。使用Paint可以绘制出更佳酷炫效果的文字出来。

Paint文本相关常用方法表

android paint绘制文字居中显示_绘制文字_04

第一类(drawText)

第一类可以指定文本开始的位置,可以截取文本中部分内容进行绘制。其中x,y两个参数是指定文本绘制两个基线,示例:

/**
         * 第一种方法,绘制文字,后边的200,500参数为绘制文字的基准线的位置
         *200表示文字左侧距离Group位置,500表示文字底部距离Group顶部的位置
         */
        String tr = "ABCDEFJHK";
        canvas.drawText(tr,200,300,mPaint);

android paint绘制文字居中显示_绘制文字_05

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);

android paint绘制文字居中显示_Android自动以控件_06

另外,对于字符数组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);

android paint绘制文字居中显示_绘制文字_07

第二类方法:(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);


android paint绘制文字居中显示_Android自动以控件_08

第三类(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);

android paint绘制文字居中显示_字符串_09

文字的绘制就先讲到这里,我们知道绘制文字关键的两个类,分别是Pain画笔和Path路径,这两个类还有很多方法供我们使用,通过这两个类的设置可以绘制出更多复杂和绚丽的效果。