主函数:

  1. import java.util.Date;  
  2. import android.R.integer;  
  3. import android.app.Activity;  
  4. import android.graphics.Canvas;  
  5. import android.graphics.Paint;  
  6. import android.os.Bundle;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.LinearLayout;  
  9.  
  10. public class AndroidtestActivity04 extends Activity {  
  11.     /** Called when the activity is first created. */ 
  12.  
  13.     @Override 
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);//必须有  
  16.         setContentView(R.layout.main);  
  17.  
  18.         LinearLayout layout =(LinearLayout) findViewById(R.id.root);//在根界面创建一个线性布局管理器  
  19. //      final line l=new line(this);//实例一个画线实例  
  20. //      layout.addView(l);//画线实例添加进线性布局  
  21.           
  22.         final ball b=new ball(this);      
  23. //      b.setMinimumWidth(layout.getWidth());  
  24. //      b.setMinimumHeight(layout.getHeight());  
  25.         layout.addView(b);  
  26.           
  27.     }  

画一个圆ball.java类:

 

  1. import android.R.color;  
  2. import android.content.Context;  
  3. import android.graphics.Canvas;  
  4. import android.graphics.Color;  
  5. import android.graphics.Paint;  
  6. import android.view.MotionEvent;  
  7. import android.view.View;  
  8.  
  9. public class ball extends View{  
  10.     public float bx=50;  
  11.     public float by=50;  
  12.     public Paint p;  
  13.     public Canvas canvas;  
  14.       
  15.     public ball(Context context) {  
  16.         super(context);  
  17.         p=new Paint();//定义一个画笔  
  18.         p.setColor(Color.GREEN);//设置画笔的颜色  
  19.         canvas =new Canvas();  
  20.     }  
  21.     //ondraw方法画一个圆  
  22.     @Override 
  23.     protected void onDraw(Canvas canvas) {  
  24.         super.onDraw(canvas);  
  25.         canvas.drawCircle(bx, by, 20, p);//画一个圆:x:50,y:50,半径:50的圆  
  26.     }  
  27.     //设置ball的触摸监听事件  
  28.     @Override 
  29.     public boolean onTouchEvent(MotionEvent event) {  
  30. //      if (event.getAction()==MotionEvent.ACTION_DOWN) {//鼠标按下  
  31. //          bx=event.getX();  
  32. //          by=event.getY();  
  33. //          invalidate();//重绘圆  
  34. //      }  
  35. //      if (event.getAction()==MotionEvent.ACTION_UP) {//鼠标抬起  
  36. //            
  37. //      }  
  38. //      if (event.getAction()==MotionEvent.ACTION_MOVE) {//鼠标移动  
  39. //          bx=event.getX();  
  40. //          by=event.getY();  
  41. //          invalidate();//重绘圆  
  42. //      }  
  43.         bx=event.getX();  
  44.         by=event.getY();  
  45.         invalidate();//重绘圆  
  46.         return true;  
  47.     }  
  48.       
  49.       

画线line.java类:鼠标点击画线

  1. import android.content.Context;  
  2. import android.graphics.Bitmap;  
  3. import android.graphics.Canvas;  
  4. import android.graphics.Color;  
  5. import android.graphics.Paint;  
  6. import android.view.MotionEvent;  
  7. import android.view.View;  
  8.  
  9. class line extends View {  
  10.  
  11.     public Canvas canvas;  
  12.     public Paint p;  
  13.     private Bitmap bitmap;  
  14.     float x,y;  
  15.     int bgColor;  
  16.  
  17.     public line(Context context) {  
  18.         super(context);  
  19.         //设置颜色  
  20.         bgColor = Color.WHITE;                 
  21.         bitmap = Bitmap.createBitmap(480854, Bitmap.Config.ARGB_8888);      
  22.         //建立画布  
  23.         canvas=new Canvas();  
  24.         //设置位图  
  25.         canvas.setBitmap(bitmap);         
  26.         //设置图层  
  27.         p = new Paint(Paint.DITHER_FLAG);  
  28.         //可以更平滑  
  29.         p.setAntiAlias(true);                  
  30.         p.setColor(Color.RED);    
  31.         //样式  
  32.         p.setStrokeCap(Paint.Cap.ROUND);  
  33.         //线条宽  
  34.         p.setStrokeWidth(8);                  
  35.           
  36.     }  
  37.       
  38.       
  39.       
  40.     @Override 
  41.     public boolean onTouchEvent(MotionEvent event) {  
  42.  
  43.         if (event.getAction() == MotionEvent.ACTION_MOVE) {     
  44.             //画线  
  45.             canvas.drawLine(x, y, event.getX(), event.getY(), p);     
  46.             invalidate();  
  47.         }  
  48.  
  49.         if (event.getAction() == MotionEvent.ACTION_DOWN) {     
  50.             x = event.getX();                 
  51.             y = event.getY();  
  52.             //画一个点  
  53.             canvas.drawPoint(x, y, p);                  
  54.             invalidate();  
  55.         }  
  56.         if (event.getAction() == MotionEvent.ACTION_UP) {      
  57.           
  58.         }  
  59.         //记录当前的鼠标坐标  
  60.         x = event.getX();    
  61.         y = event.getY();  
  62.         return true;  
  63.     }  
  64.       
  65.     @Override 
  66.     public void onDraw(Canvas c) {                        
  67.         c.drawBitmap(bitmap, 00null);           
  68.     }  
  69.  }