canvas.drawArc(rectf_head, -10, -160, false, paint); //绘制弧
//绘制眼睛
paint.setColor(Color.WHITE); //设置画笔的颜色为白色
canvas.drawCircle(135, 53, 4, paint); //绘制圆
canvas.drawCircle(175, 53, 4, paint); //绘制圆
paint.setColor(0xFFA4C739); //设置画笔的颜色为绿色
//绘制天线
paint.setStrokeWidth(2); //设置笔触的宽度
canvas.drawLine(120, 15, 135, 35, paint); //绘制线
canvas.drawLine(190, 15, 175, 35, paint); //绘制线
//绘制身体
canvas.drawRect(110, 75, 200, 150, paint); //绘制矩形
RectF rectf_body=new RectF(110,140,200,160);
canvas.drawRoundRect(rectf_body, 10, 10, paint); //绘制圆角矩形
//绘制胳膊
RectF rectf_arm=new RectF(85,75,105,140);
canvas.drawRoundRect(rectf_arm, 10, 10, paint); //绘制左侧的胳膊
rectf_arm.offset(120, 0); //设置在X轴上偏移120像素
canvas.drawRoundRect(rectf_arm, 10, 10, paint); //绘制右侧的胳膊
//绘制腿
RectF rectf_leg=new RectF(125,150,145,200);
canvas.drawRoundRect(rectf_leg, 10, 10, paint); //绘制左侧的腿
rectf_leg.offset(40, 0); //设置在X轴上偏移40像素
canvas.drawRoundRect(rectf_leg, 10, 10, paint); //绘制右侧的腿
运行本实例,将显示如图9.11所示的运行结果。
图9.11 在屏幕上绘制Android机器人
9.2.6 范例2:实现简易涂鸦板
例9.8 在Eclipse中创建Android项目,名称为9.8,实现用于实现手绘功能的简易涂鸦板。(实例位置:光盘\TM\sl\9\9.8)
(1)创建一个名称为DrawView的类,该类继承自android.view.View类。在该类中,首先定义程序中所需的属性,然后添加构造方法,并重写onDraw(Canvas canvas)方法,关键代码如下:
public class DrawView extends View {
private int view_width = 0; //屏幕的宽度
private int view_height = 0; //屏幕的高度
private float preX; //起始点的X坐标值
private float preY; //起始点的Y坐标值
private Path path; //路径
public Paint paint = null; //画笔
Bitmap cacheBitmap = null; //定义一个内存中的图片,该图片将作为缓冲区
Canvas cacheCanvas = null; //定义cacheBitmap上的Canvas对象
/**
* 功能:构造方法
*/
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/*
* 功能:重写onDraw()方法
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
}
(2)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的线性布局管理器和TextView组件删除,然后添加一个帧布局管理器,并在帧布局管理器中添加步骤(1)中创建的自定义视图。修改后的代码如下:
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
android:id="@+id/drawView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
(3)在DrawView类的构造方法中,首先获取屏幕的宽度和高度,并创建一个与该View相同大小的缓存区,然后创建一个新的画面,并实例化一个路径,再将内存中的位图绘制到cacheCanvas中,最后实例化一个画笔,并设置画笔的相关属性。关键代码如下:
view_width = context.getResources().getDisplayMetrics().widthPixels; //获取屏幕的宽度
view_height = context.getResources().getDisplayMetrics().heightPixels; //取屏幕的高度
//创建一个与该View相同大小的缓存区
cacheBitmap = Bitmap.createBitmap(view_width, view_height,Config.ARGB_8888);
cacheCanvas = new Canvas(); //创建一个新的画布
path = new Path();
cacheCanvas.setBitmap(cacheBitmap); //在cacheCanvas上绘制cacheBitmap
paint = new Paint(Paint.DITHER_FLAG);
paint.setColor(Color.RED); //设置默认的画笔颜色
//设置画笔风格
paint.setStyle(Paint.Style.STROKE); //设置填充方式为描边
paint.setStrokeJoin(Paint.Join.ROUND); //设置笔刷的图形样式