乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第97页

书籍名:《Android从入门到精通》    作者:明日科技


1.  drawText()方法

drawText()方法用于在画布的指定位置绘制文字。该方法比较常用的语法格式如下:

drawText(String  text,  float  x,  float  y,  Paint  paint)

在该语法中,参数text用于指定要绘制的文字;x用于指定文字起始位置的X坐标;y用于指定文字起始位置的Y坐标;paint用于指定使用的画笔。

例如,要在画布上输出文字“明日科技”,可以使用下面的代码:

Paint  paintText=new  Paint();



paintText.setTextSize(20);



canvas.drawText("明日科技",  165,65,  paintText);

2.  drawPosText()方法

drawPosText()方法也用于在画布上绘制文字,与drawText()方法不同的是,使用该方法绘制字符串时,需要为每个字符指定一个位置。该方法比较常用的语法格式如下:

drawPosText(String  text,  float[]  pos,  Paint  paint)

在该语法中,参数text用于指定要绘制的文字;pos用于指定每一个字符的位置;paint用于指定要使用的画笔。

例如,要在画布上分两行输出文字“很高兴见到你”,可以使用下面的代码:

Paint  paintText=new  Paint();



paintText.setTextSize(24);



float[]  pos=  new  float[]{80,215,  105,215,  130,215,80,240,  105,240,  130,240};



canvas.drawPosText("很高兴见到你",  pos,  paintText);

例9.4   在Eclipse中创建Android项目,名称为9.4,实现绘制一个游戏对白界面。(实例位置:光盘\TM\sl\9\9.4)

(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的线性布局管理器和TextView组件删除,然后添加一个帧布局管理器并为其设置背景,用于显示自定义的绘图类,修改后的代码如下:




android:id="@+id/frameLayout1"



android:layout_width="fill_parent"



android:layout_height="fill_parent"



android:background="@drawable/background"



android:orientation="vertical"  >





(2)打开默认创建的MainActivity,在该文件中,创建一个名称为MyView的内部类,该类继承自android.view.View类,并添加构造方法和重写onDraw(Canvas  canvas)方法,关键代码如下:

public  class  MyView  extends  View{



public  MyView(Context  context)  {



super(context);



}



@Override



protected  void  onDraw(Canvas  canvas)  {



super.onDraw(canvas);



}



}

(3)在MainActivity的onCreate()方法中,获取布局文件中添加的帧布局管理器,并将步骤(2)中创建的MyView视图添加到该帧布局管理器中,关键代码如下:

FrameLayout  ll=(FrameLayout)findViewById(R.id.frameLayout1);  //获取布局文件中添加的帧布局管理器



ll.addView(new  MyView(this));  //将自定义的MyView视图添加到帧布局管理器中

(4)在MyView的onDraw()方法中,首先创建一个采用默认设置的画笔,然后设置画笔颜色以及对齐方式、文字大小和使用抗锯齿功能,再分别通过drawText()和drawPosText()方法绘制文字。具体代码如下:

Paint  paintText=new  Paint();  //创建一个采用默认设置的画笔



paintText.setColor(0xFFFF6600);  //设置画笔颜色



paintText.setTextAlign(Align.LEFT);  //设置文字左对齐



paintText.setTextSize(24);  //设置文字大小



paintText.setAntiAlias(true);  //使用抗锯齿功能



canvas.drawText("不,我不想去!",  520,75,  paintText);  //通过drawText()方法绘制文字



float[]  pos=  new  float[]{400,260,  425,260,  450,260,  475,260,



363,290,  388,290,  413,290,  438,290,  463,290,  488,290,  513,290};  //定义代表文字位置的数组



canvas.drawPosText("你想和我一起去探险吗?",  pos,  paintText);  //通过drawPosText()方法绘制文字

运行本实例,将显示如图9.5所示的运行结果。



图9.5 在画布上绘制文字

9.2.3 绘制路径

在Android中提供了绘制路径的功能。绘制一条路径可以分为创建路径和将定义好的路径绘制在画布上两部分,下面分别进行介绍。

1.  创建路径

要创建路径,可以使用android.graphics.Path类来实现。Path类包含一组矢量绘图方法,如画圆、矩形、弧、线条等。常用的绘图方法如表9.5所示。

表9.5 Path类的常用绘图方法





方 法  描 述

addArc(RectF  oval,  float  startAngle,  float  sweepAngle)  添加弧形路径

addCircle(float  x,  float  y,  float  radius,  Path.Direction  dir)  添加圆形路径

addOval(RectF  oval,  Path.Direction  dir)  添加椭圆形路径

addRect(RectF  rect,  Path.Direction  dir)  添加矩形路径

addRoundRect(RectF  rect,  float  rx,  float  ry,  Path.Direction  dir)  添加圆角矩形路径

moveTo(float  x,  float  y)  设置开始绘制直线的起始点

lineTo(float  x,  float  y)  在moveTo()方法设置的起始点与该方法指定的结束点之间画一条直线,如果在调用该方法之前没使用moveTo()方法设置起始点,那么将从(0,0)点开始绘制直线