灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2602回复:0

Android绘制进阶之二:文本的绘制

楼主#
更多 发布于:2012-09-06 13:51

文本的绘制。
字体有三种类型: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(10, 10);
101.     path.lineTo(50, 50);
102.     path.lineTo(150, 250);
103.     canvas.drawTextOnPath("hello", path , 10, 10, 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.     }
116. }


喜欢0 评分0
游客

返回顶部