开始学习绘制,首先联系图像的基本元素的绘制,包括点线面及路径的绘制,没有难度,代码示例如下:

  1. package com.mike.activity; 
  2.  
  3. import android.R; 
  4. import android.app.Activity; 
  5. import android.graphics.Bitmap; 
  6. import android.graphics.Canvas; 
  7. import android.graphics.Color; 
  8. import android.graphics.Paint; 
  9. import android.graphics.Paint.Style; 
  10. import android.graphics.Path; 
  11. import android.graphics.RectF; 
  12. import android.graphics.drawable.BitmapDrawable; 
  13. import android.os.Bundle; 
  14. import android.view.ViewGroup.LayoutParams; 
  15. import android.widget.ImageView; 
  16. import android.widget.LinearLayout; 
  17.  
  18. public class DrawDemoActivity extends Activity { 
  19.     /** Called when the activity is first created. */ 
  20.     @Override 
  21.     public void onCreate(Bundle savedInstanceState) { 
  22.         super.onCreate(savedInstanceState); 
  23.  
  24.         /* 
  25.          * 配置類型:1,ALPHA_8: 用于Alpha蒙版的位图,只为alpha通道分配8位,没有其他颜色 
  26.          *           2,ARGB_4444,  
  27.          *           3,ARGB_8888,  
  28.          *           4,RGB565(与ARGB_8888具有相同的高质量,但占用更少的内存) 
  29.          *  
  30.          * ARGB_8888 :每个颜色占8位,创建位图 
  31.          * param :      A:alpha通道:灰度通道,用来表明透明度信息,共256级 
  32.          *           R:red    
  33.          *           G:green     
  34.          *           B:blue 
  35.          *  
  36.          *  
  37.          * Note: 蒙板:蒙板要结合图层来使用。蒙板的用处很多,可以用来扣图、创建选区等等, 
  38.          *             由于我好久不用PS了,所以蒙板的好多功能在这里不能一下子讲完。 
  39.                                                                举个通俗的例子:蒙板就是一块布,在某一图层上添加蒙板后就是在那个图层上盖了一块布, 
  40.                                                                利用那块布可以实现多种效果,用黑色在蒙板上填充就看不见蒙板所在图层下面的东西, 
  41.                                                                用白色填充就看见蒙板所在图层下面的东西,还可以利用蒙板制作渐变。 
  42.                                                                总之蒙板这个功能说复杂它就复杂,说它简单它就简单,这个家伙功能不小。 
  43.          *  
  44.          */ 
  45.         Bitmap bitmap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(), 
  46.                 getWindowManager().getDefaultDisplay().getHeight(), 
  47.                 Bitmap.Config.ARGB_8888);//配置 
  48.          
  49.      
  50.          
  51.     Canvas canvas = new Canvas(bitmap); //画布 
  52.      
  53.     Paint paint = new Paint(); 
  54.     paint.setColor(Color.WHITE);//可以直接设置颜色,也可通过Argb方法,,设置精确颜色 
  55. //  int myColor = Color.argb(alpha, red, green, blue); 
  56.      
  57.      
  58.     /* 
  59.      * 风格: 
  60.      *         STROKE 仅绘形状的轮廓 
  61.      *         FILL   仅填充形状 
  62.      *         FILL_AND_STROKE 填充并绘制形状的轮廓 
  63.      */ 
  64.      
  65.     //1:画一个点 
  66. //  paint.setStyle(Style.STROKE);不涉及封闭图形,不写此属性ok~ 
  67. //  paint.setStrokeWidth(100); 
  68. //  canvas.drawPoint(199, 201, paint); 
  69.      
  70.      
  71.     //2,画一条线 
  72. //  paint.setStyle(Style.STROKE);不涉及封闭图形,不写此属性ok~ 
  73. //  paint.setStrokeWidth(10); 
  74. //  canvas.drawLine(50, 50, 100, 100, paint); 
  75.      
  76.     //3,画一个矩形 
  77. //  paint.setStyle(Style.FILL_AND_STROKE); 
  78. //  paint.setStrokeWidth(10); 
  79. //  canvas.drawRect(50, 50, 100, 100, paint);//另外一种绘制矩形的方法是:传递一个RectF对象 
  80.      
  81.     //4,画一个椭圆 
  82. //  paint.setStyle(Style.STROKE); 
  83. //  paint.setStrokeWidth(10); 
  84. //  RectF oval = new RectF(10, 10, 400, 200) ;//即矩形的内接圆 
  85. //  canvas.drawOval(oval , paint); 
  86.      
  87.     //5,画一个圆 
  88. //  paint.setStyle(Style.STROKE); 
  89. //  paint.setStrokeWidth(10); 
  90. //  canvas.drawCircle(100, 100, 50, paint); 
  91.      
  92.     //6,路径:通过路径Path对象 
  93. //  paint.setStyle(Style.STROKE); 
  94. //  paint.setStrokeWidth(10); 
  95. //  Path path = new Path(); 
  96. //  path.moveTo(20, 20);//起始点 
  97. //  path.lineTo(30, 30); 
  98. //  path.lineTo(40, 60); 
  99. //  path.lineTo(70, 100); 
  100. //  canvas.drawPath(path, paint); 
  101.      
  102.     ImageView imageView = new ImageView(this); 
  103.      
  104.     LayoutParams p = new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); 
  105.     imageView.setLayoutParams(p); 
  106.     imageView.setBackgroundDrawable(new BitmapDrawable(bitmap)); 
  107.      
  108.      
  109.     setContentView(imageView); 
  110.      
  111.  
  112.     }