開始學習繪制,首先聯系圖像的基本元素的繪制,包括點線面及路徑的繪制,沒有難度,代碼示例如下:
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 僅填充形狀 www.aiwalls.com
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. }
113. }
摘自 小新專欄