通常有下列两种方法来绘制二维图形:
1.绘制图像或动画到图像视图(ImageView)上
图像或动画是由系统的显示绘图处理器来操作,简单来说只是将图像放进图像视图中。当您所描绘的是静态图或是已经规划好的连续动作的动画时,可采用这个方法。
2.图形直接绘制到画布(Canvas)上
调用draw()方法(传给画布)或调用Canvas中draw开头的方法中的一个(比如drawPicture())。这样做可以控制动画。当应用程序需要定期重复绘制图像时,比如游戏软件,可以采用此方式,绘图到画布上。
图像显示对象——Drawable
如果只是绘制简单的图形,可以绘图到图像视图的背景,或放置到ImageView的内容上。一般来说,Drawable类是“任何可以绘图东西”的抽象对象。Drawable类被继承且定义出许多不同的、具体的Drawable图形,包括BitmapDrawable、ShapeDrawable、PictureDrawable、LayerDrawable等,您可以继承这些类来定义具有自己独特功能的Drawable对象。
有3种方法可以定义和实现一个Drawable对象:
1.使用图像存储在项目的资源
2.使用XML文件来定义Drawable属性
3.使用一般构造函数
从项目资源来创建图像
使用从图像资源来获取图像文件之前,需要将图像文件添加到项目的“/res/drawable”目录内,可以从Java程序代码或XML窗体布局文件引用到这个图像。使用它的资源ID来引用,资源ID名称是没有扩展名的文件名称,比如myImage.png存储在“/res/drawable”目录内就可以使用R.drawable.myImage资源ID来获取这个图像。
1.
import android.content.Context;
import
android.content.res.Resources;
import
android.graphics.Bitmap;
import
android.graphics.BitmapFactory;
import
android.graphics.Canvas;
import
android.graphics.Paint;
import
android.view.View;
public class GameView extends View
{
//要显示的图像
Bitmap bmp;
//构造方法
public
GameView(Context context) {
super(context);
//得到项目资源
Resources res=context.getResources();
//从项目资源得到图像
bmp=BitmapFactory.decodeResource(res, R.drawable.myImage);
}
//绘制图像的方法
protected
void onDraw(Canvas canvas) {
super.onDraw(canvas);
//在画布上画图
canvas.drawBitmap(bmp, 0,50,new Paint());
}
}
2.
import android.app.Activity;
import
android.os.Bundle;
public class Main
extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GameView(this));
}
}