万书网 > 文学作品 > Android从入门到精通 > 第96页

第96页



表9.3 BitmapFactory类的常用方法





方 法  描 述

decodeFile(String  pathName)  用于从给定的路径所指定的文件中解析、创建Bitmap对象

decodeFileDescriptor(FileDescriptor  fd)  用于从FileDescriptor对应的文件中解析、创建Bitmap对象

decodeResource(Resources  res,  int  id)  用于根据给定的资源id,从指定的资源中解析、创建Bitmap对象

decodeStream(InputStream  is)  用于从指定的输入流中解析、创建Bitmap对象

例如,要解析SD卡上的图片文件img01.jpg并创建对应的Bitmap对象,可以使用下面的代码:

String  path="/sdcard/pictures/bccd/img01.jpg";



Bitmap  bm=BitmapFactory.decodeFile(path);

要解析Drawable资源中保存的图片文件img02.jpg并创建对应的Bitmap对象,可以使用下面的代码:

Bitmap  bm=BitmapFactory.decodeResource(MainActivity.this.getResources(),  R.drawable.img02);





9.2 绘制2D图像

教学录像:光盘\TM\lx\9\绘制2D图像.exe

Android提供了非常强大的本机二维图形库,用于绘制2D图像。在Android应用中,比较常用的是绘制几何图形、文本、路径和图片等,下面分别进行介绍。

9.2.1 绘制几何图形

常见的几何图形包括点、线、弧、圆形、矩形等。在Android中,Canvas类提供了丰富的绘制几何图形的方法,通过这些方法,可以绘制出各种几何图形。常用的绘制几何图形的方法如表9.4所示。

表9.4 Canvas类提供的绘制几何图形的方法



说明:  表9.4中给出的绘图效果使用的画笔均为以下代码所定义的画笔。

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



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



paint.setColor(Color.RED);  //设置颜色为红色



paint.setStrokeWidth(2);  //笔触的宽度为2像素



paint.setStyle(Style.STROKE);  //填充样式为描边

例9.3   在Eclipse中创建Android项目,名称为9.3,实现绘制由5个不同颜色的圆形组成的图案。(实例位置:光盘\TM\sl\9\9.3)

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








android:id="@+id/frameLayout1"



android:layout_width="fill_parent"



android:layout_height="fill_parent"



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()方法中,首先指定画布的背景色,然后创建一个采用默认设置的画笔,并设置该画笔使用抗锯齿功能,接着设置画笔笔触的宽度,再设置填充样式为描边,最后设置画笔颜色并绘制圆形。具体代码如下:

canvas.drawColor(Color.WHITE);  //指定画布的背景色为白色



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



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



paint.setStrokeWidth(3);  //设置笔触的宽度



paint.setStyle(Style.STROKE);  //设置填充样式为描边



paint.setColor(Color.BLUE);



canvas.drawCircle(50,  50,  30,  paint);  //绘制蓝色的圆形



paint.setColor(Color.YELLOW);



canvas.drawCircle(100,  50,  30,  paint);  //绘制黄色的圆形



paint.setColor(Color.BLACK);



canvas.drawCircle(150,  50,  30,  paint);  //绘制黑色的圆形



paint.setColor(Color.GREEN);



canvas.drawCircle(75,  90,  30,  paint);  //绘制绿色的圆形



paint.setColor(Color.RED);



canvas.drawCircle(125,  90,  30,  paint);  //绘制红色的圆形

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



图9.4 绘制5个不同颜色的圆形

9.2.2 绘制文本

在Android中,虽然可以通过TextView或图片显示文本,但是在开发游戏,特别是开发RPG(角色)类游戏时,会包含很多文字,使用TextView和图片显示文本不太合适,这时,就需要通过绘制文本的方式来实现。Canvas类提供了一系列绘制文本的方法,下面分别进行介绍。