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

第100页





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);  //设置笔刷的图形样式