文本的绘制。

字体有三种类型:1,内置基本字体 2,通过基本字体和样式,创建新的Typeface 3,引入外部的ttf文件。

示例代码如下:

 

  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.Typeface; 
  10. import android.graphics.Paint.Style; 
  11. import android.graphics.Path; 
  12. import android.graphics.RectF; 
  13. import android.graphics.drawable.BitmapDrawable; 
  14. import android.os.Bundle; 
  15. import android.view.ViewGroup.LayoutParams; 
  16. import android.widget.ImageView; 
  17. import android.widget.LinearLayout; 
  18.  
  19. public class DrawDemoActivity extends Activity { 
  20.     /** Called when the activity is first created. */ 
  21.     @Override 
  22.     public void onCreate(Bundle savedInstanceState) { 
  23.         super.onCreate(savedInstanceState); 
  24.  
  25.         /* 
  26.          * 配置類型:1,ALPHA_8: 用于Alpha蒙版的位图,只为alpha通道分配8位,没有其他颜色 
  27.          *           2,ARGB_4444,  
  28.          *           3,ARGB_8888,  
  29.          *           4,RGB565(与ARGB_8888具有相同的高质量,但占用更少的内存) 
  30.          *  
  31.          * ARGB_8888 :每个颜色占8位,创建位图 
  32.          * param :      A:alpha通道:灰度通道,用来表明透明度信息,共256级 
  33.          *           R:red    
  34.          *           G:green     
  35.          *           B:blue 
  36.          *  
  37.          *  
  38.          * Note: 蒙板:蒙板要结合图层来使用。蒙板的用处很多,可以用来扣图、创建选区等等, 
  39.          *             由于我好久不用PS了,所以蒙板的好多功能在这里不能一下子讲完。 
  40.                                                                举个通俗的例子:蒙板就是一块布,在某一图层上添加蒙板后就是在那个图层上盖了一块布, 
  41.                                                                利用那块布可以实现多种效果,用黑色在蒙板上填充就看不见蒙板所在图层下面的东西, 
  42.                                                                用白色填充就看见蒙板所在图层下面的东西,还可以利用蒙板制作渐变。 
  43.                                                                总之蒙板这个功能说复杂它就复杂,说它简单它就简单,这个家伙功能不小。 
  44.          *  
  45.          */ 
  46.          
  47.          
  48.          
  49.         /* 
  50.          *  1 , 内置字体   :  
  51.          *   
  52.          *      a,Typeface.MONOSPACE:    等宽字代替,每个字母之间的间隔相等 
  53.          *      b, Typeface.SANS_SERIF:     无衬线 
  54.          *      c, Typeface.SERIF:                  有衬线 
  55.          *      d, Typeface.DEFAULT:              =    Typeface.SANS_SERIF        
  56.          *      e, Typeface.DEFAULT_BOLD  无衬线粗体 
  57.          *       
  58.          *       
  59.          *       
  60.          *   2,字体样式    由基本字体和样式create 新的Typeface 
  61.          *      a,Typeface.BOLD 粗体 
  62.          *      b,Typeface.ITALIC 意大利体 
  63.          *      c,Typeface.NORMAL 普通 
  64.          *      d,Typeface.BOLD_ITALIC 粗意大利体 
  65.          *       
  66.          *   3,外部字体,通过asset引入ttf文件 
  67.          */ 
  68.          
  69.          
  70.          
  71.          
  72.          
  73.          
  74.     Bitmap bitmap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(), 
  75.                 getWindowManager().getDefaultDisplay().getHeight(), 
  76.                 Bitmap.Config.ARGB_8888);//配置 
  77.  
  78.     Canvas canvas = new Canvas(bitmap); //画布 
  79.      
  80.     Paint paint = new Paint(); 
  81.     paint.setColor(Color.WHITE);//可以直接设置颜色,也可通过Argb方法,,设置精确颜色 
  82.     //int myColor = Color.argb(alpha, red, green, blue); 
  83.     paint.setStrokeWidth(50);//设置此size并不改变TextSize 
  84.  
  85.     //1,使用内置字体 
  86.     paint.setTypeface(Typeface.DEFAULT); 
  87.     //2,通过样式,创建字体 
  88.     Typeface typeface = Typeface.create(Typeface.DEFAULT, Typeface.ITALIC); 
  89.     //3,通过外部文件创建字体 
  90. //  Typeface.createFromAsset(getAssets(), "filename.ttf"); 
  91.      
  92.     paint.setTextSize(50);//Size优先级更高 
  93. //  canvas.drawText("hello", 100, 100, paint);//普通的绘制文本 
  94.      
  95.      
  96.     /* 
  97.      * 按照指定路径画字 
  98.      */ 
  99.     Path path = new Path(); 
  100.     path.moveTo(1010); 
  101.     path.lineTo(5050); 
  102.     path.lineTo(150250); 
  103.     canvas.drawTextOnPath("hello", path , 1010, paint); 
  104.      
  105.      
  106.     ImageView imageView = new ImageView(this); 
  107.      
  108.     LayoutParams p = new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); 
  109.     imageView.setLayoutParams(p); 
  110.     imageView.setBackgroundDrawable(new BitmapDrawable(bitmap)); 
  111.      
  112.     setContentView(imageView); 
  113.      
  114.  
  115.     }