安卓方法——View.onDraw(Canvas canvas)的使用

来源:互联网 发布:腾讯播放器mac版 编辑:程序博客网 时间:2024/05/21 06:12

原文链接:http://blog.csdn.net/zhangqijie001/article/details/5827012


View通过View.onDraw(Canvas canvas)来Draw.

我们可以定义自己的继承于View的TestView,然后重载View.onDraw(Canvas canvas).

 

对于自定义的TestView如何与Activity关联?有以下两种方式:

  1. 直接在setContentView(View view)里面加进去自定义的View:setContentView(new TestView(this)).
  2. 另外,可以在layout文件里面可以使用自定义的View(如果自定义的View为内部类,就会失效),如:

[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout  
  3.     <a href="http://lib.csdn.net/base/15" class='replace_word' title="Android知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Android</a>:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     xmlns:android="http://schemas.android.com/apk/res/android">  
  6.     <com.android.test.TestView  
  7.         android:id="@+id/testview"  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="fill_parent"/>  
  10. </FrameLayout>  

 

以下为使用onDraw(Canvas canvas)画矩形区域,及在其上画文本的实例(通过使用内部类使程序显得更加简洁,紧凑):

[java] view plain copy
  1. package com.android.test;  
  2. import android.app.Activity;  
  3. import android.content.Context;  
  4. import android.graphics.Canvas;  
  5. import android.graphics.Color;  
  6. import android.graphics.Paint;  
  7. import android.graphics.Rect;  
  8. import android.graphics.Typeface;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. public class TestActivity extends Activity {  
  12.     /** Called when the activity is first created. */  
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(new TestView(this));  
  17.     }  
  18.     public class TestView extends View {  
  19.         private Paint mPaint = new Paint();  
  20.         public TestView(Context context) {  
  21.             super(context);  
  22.         }  
  23.           
  24.         @Override  
  25.         protected void onDraw(Canvas canvas) {  
  26.             // TODO Auto-generated method stub  
  27.             super.onDraw(canvas);  
  28.               
  29.             String text = "Android - 机器人";            
  30.             mPaint.setColor(Color.WHITE);  
  31.               
  32.             Paint paint = new Paint();  
  33.             paint.setColor(Color.RED);  
  34.               
  35.             String familyName = "宋体";  
  36.             Typeface font = Typeface.create(familyName,Typeface.BOLD);  
  37.             paint.setTypeface(font);  
  38.               
  39.             paint.setTextSize(22);  
  40.               
  41.             canvas.drawRect(new Rect(00320240), mPaint);  
  42.             canvas.drawText(text, 0100, paint);  
  43.         }  
  44.     }  
  45. }  

 

运行效果如下图:


0 0