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);
posted on 2014-08-26 14:02 宁静致远,一览众山小 阅读(538) 评论(0) 编辑 收藏 举报