4.1.6 绘制文本

    当然,我们不仅局限于绘制直线、形状以及点。通过使用drawText方法,同样可以在Canvas对象上绘制文本;只需要绘制的文本作为一个字符串传入,同时传入起始的x和y坐标以及一个Paint对象。Paint类有一个称为setTextSize的方法,用来设置可以使用的文本大小。

1         Paint paint=new Paint();
2         paint.setColor(Color.GREEN);
3         paint.setTextSize(40);
4         float text_x=120;
5         float text_y=120;
6         canvas.drawText("Hello", text_x, text_y, paint);

    1.内置字体

     在绘制文本时,如果不能指定字体或样式,那么将会非常受限。幸运的是,Paint类允许通过调用setTypeface方法传入一个Typeface对象来指定应该使用哪种字体。

     Typeface类中定义了许多的常量,以表示Android操作系统中附带的内置字体。这些字体是由称为Ascender的公司(www.ascendercorp.com/)所创建的,作为他们的Droid字体套件的一部分。

     这些字体在Typeface类中定义如下:

     Typeface.MONOSPACE:这种字体中的每个字母之间都有相等的间隔。

     Typeface.SNAS_SERIF:这是没有衬线(serif)的字体。

     Typeface.SERIF:这是包含衬线(serif)的字体。

     注意:衬线(serif)是行的末端组成字母的短线

     除了这3种主要的字体,还有其他两个字体常量。

     Typeface.DEFAULT:这种字体与无衬线字体相同,如果没有调用setTypeface,那么它将使默认的字体。

     Typeface.DEFAULT_BOLD:这是无衬线字体的粗体版本。

1         Paint paint=new Paint();
2         paint.setColor(Color.GREEN);
3         paint.setTextSize(40);
4         paint.setTypeface(Typeface.DEFAULT_BOLD);
5         float text_x=120;
6         float text_y=120;
7         canvas.drawText("Hello", text_x, text_y, paint);

    2.字体样式

    与内置字体一起,Typeface类中还定义了一系列的样式常量。通过使用在Typeface类中存在的create方法,可以将这些样式用于修改某个内置字体。这个方法返回一个新的、可用的Typeface对象。

    以下是在Typeface类中定义的样式列表:

    Typeface.BOLD:粗体

    Typeface.ITALIC:斜体

    Typeface.NORMAL:普通

    Typeface.BOLD_ITALIC:粗体加斜体

    使用它们非常的简单。首先调用Typeface.create,传入想要应用的基本字体和样式。然后,我们将获得传递给paint.setTypeface方法的Typeface对象,这就是所需要执行的过程。下面是一个简单的示例。

1         Paint paint=new Paint();
2         paint.setColor(Color.GREEN);
3         paint.setTextSize(40);
4         Typeface serif_italic=Typeface.create(Typeface.SERIF, Typeface.ITALIC);
5         paint.setTypeface(serif_italic);
6         float text_x=120;
7         float text_y=120;
8         canvas.drawText("Hello", text_x, text_y, paint);

    3.外部字体

    Android应用程序不限定只能使用内置字体。Android支持从任何TrueType字体文件创建Typeface对象。TrueType字体是一种标准字体,并且可在各种平台上使用。这为我们的应用程序带来了广泛的可能性。

    互联网上有许多的站点提供免费的字体,当然,也有创建字体的设计单位和公司会销售使用其字体的许可。

    一个与Android内置字体完全不同的字体是由Claude Pelletier创建的Chopin Script字体。它面向公共领域,可以通过各种来源免费下载,如fontspace.com(www.fontspace.com/diogene/chopinscript)等。为了使用该字体,可以下载它,并将.ttf文件(chopinscript.ttf)放入到项目的“assets”文件夹中。

   Typeface.createFromAsset方法接受一个AssetManager对象以及文件的名称作为参数,其中AssetManager对象可以通过从Context调用getAsset获得。该方法返回一个Typeface对象,可以将它传递给paint.setTypeface方法。

1    Typeface chops=Typeface.createFromAsset(getAssets(), "ChopinScript.ttf");
2    paint.setTypeface(chops);

    4.路径上的文本

     不仅限于在一条水平线上绘制文本;同样可以在一条路径上绘制它。

1         Paint paint=new Paint();
2         paint.setColor(Color.GREEN);
3         paint.setTextSize(40);
4         paint.setTypeface(Typeface.DEFAULT);
5         Path p=new Path();
6         p.moveTo(20, 20);
7         p.lineTo(100, 150);
8         p.lineTo(200, 220);
9         canvas.drawTextOnPath("Hello", p, 0, 0, paint);
原文地址:https://www.cnblogs.com/ZSS-Android/p/3937147.html