Android绘制进阶之二:文本的绘制
3229 点击·0 回帖
![]() | ![]() | |
![]() | 文本的绘制。 字体有三种类型: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. } | |
![]() | ![]() |