新聞中心
這個(gè)例子是繪制多邊形,多義形和路徑,采用單選鈕RadioButton來(lái)選擇Polys 和Path示例:

創(chuàng)新互聯(lián)主營(yíng)云城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開發(fā),云城h5微信小程序搭建,云城網(wǎng)站營(yíng)銷推廣歡迎云城等地區(qū)企業(yè)咨詢
UI 設(shè)計(jì)為 上部分用來(lái)顯示繪圖內(nèi)容,下部分為兩個(gè)單選按鈕 Polys ,Path。這樣layout就和main.xml 不一樣,main.xml只含一個(gè)com.pstreets.graphics2d.GuidebeeGraphics2DView。因此需在 res\layout下新建一個(gè)polys.xml:
- android:orientation=”vertical”
- android:background=”@drawable/white”
- android:layout_width=”fill_parent”
- android:layout_height=”fill_parent”>
- android:id=”@+id/graphics2dview”
- android:layout_weight=”1″
- android:layout_width=”fill_parent”
- android:layout_height=”wrap_content”/>
- android:layout_width=”wrap_content” android:layout_height=”wrap_content”
- android:orientation=”horizontal”
- >
- android:layout_width=”wrap_content”
- android:orientation=”horizontal”
- android:textSize=”20dp”
- android:layout_height=”wrap_content”>
- android:id=”@+id/radioPolys”
- android:layout_width=”wrap_content”
- android:textColor=”@color/black”
- android:checked=”true”
- android:layout_height=”wrap_content”>
- android:id=”@+id/radioPath”
- android:layout_width=”wrap_content”
- android:textColor=”@color/black”
- android:layout_height=”wrap_content”>
RadioButton 需包含在RadioGroup中做為一個(gè)分組,這里將Polys 設(shè)為選中。
定義好Layout資源后,修改 Path.java
- private RadioButton radioPoly;
- private RadioButton radioPath;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.polys);
- graphic2dView
- = (GuidebeeGraphics2DView)
- findViewById(R.id.graphics2dview);
- radioPath = (RadioButton) findViewById(R.id.radioPath);
- radioPoly = (RadioButton) findViewById(R.id.radioPolys);
- radioPath.setOnClickListener(this);
- radioPoly.setOnClickListener(this);
- }
應(yīng)為需要處理按鍵消息,所以定義了兩個(gè)RadioButton對(duì)象,可以通過findViewById獲取實(shí)例。因?yàn)閮蓚€(gè)RadioButton這里采用 同樣的處理方法,可以讓Path實(shí)現(xiàn)OnClickListener ,即:public class Path extends Graphics2DActivity implements OnClickListener。完整代碼如下:
- 1 public class Path extends Graphics2DActivity
- 2 implements OnClickListener {
- 3
- 4 private RadioButton radioPoly;
- 5 private RadioButton radioPath;
- 6
- 7 public void onCreate(Bundle savedInstanceState) {
- 8 super.onCreate(savedInstanceState);
- 9 setContentView(R.layout.polys);
- 10 graphic2dView
- 11 = (GuidebeeGraphics2DView)
- 12 findViewById(R.id.graphics2dview);
- 13 radioPath = (RadioButton) findViewById(R.id.radioPath);
- 14 radioPoly = (RadioButton) findViewById(R.id.radioPolys);
- 15 radioPath.setOnClickListener(this);
- 16 radioPoly.setOnClickListener(this);
- 17 }
- 18
- 19 @Override
- 20 protected void drawImage() {
- 21 if (radioPoly.isChecked()) {
- 22 drawPolys();
- 23 } else {
- 24 drawPaths();
- 25 }
- 26 graphic2dView.refreshCanvas();
- 27
- 28 }
- 29
- 30 @Override
- 31 public void onClick(View view) {
- 32 drawImage();
- 33 }
- 34
- 35 private void drawPaths() {
- 36 AffineTransform mat1;
- 37
- 38 // The path.
- 39 com.mapdigit.drawing.geometry.Path path;
- 40
- 41 // Colors
- 42 Color redColor = new Color(0x96ff0000, true);
- 43 Color greenColor = new Color(0xff00ff00);
- 44 Color blueColor = new Color(0x750000ff, true);
- 45
- 46 String pathdata
- 47 = "M 60 20 Q -40 70 60 120 Q 160 70 60 20 z";
- 48 mat1 = new AffineTransform();
- 49 mat1.translate(30, 40);
- 50 mat1.rotate(-30 * Math.PI / 180.0);
- 51 path = com.mapdigit.drawing.geometry.Path.fromString(pathdata);
- 52 // Clear the canvas with white color.
- 53 graphics2D.clear(Color.WHITE);
- 54
- 55 graphics2D.setAffineTransform(new AffineTransform());
- 56 SolidBrush brush = new SolidBrush(greenColor);
- 57 graphics2D.fill(brush, path);
- 58 graphics2D.setAffineTransform(mat1);
- 59
- 60 brush = new SolidBrush(blueColor);
- 61 com.mapdigit.drawing.Pen pen
- 62 = new com.mapdigit.drawing.Pen(redColor, 5);
- 63 graphics2D.setPenAndBrush(pen, brush);
- 64 graphics2D.draw(null, path);
- 65 graphics2D.fill(null, path);
- 66
- 67 }
- 68
- 69 private void drawPolys() {
- 70 AffineTransform mat1;
- 71
- 72 // Colors
- 73 Color redColor = new Color(0x96ff0000, true);
- 74 Color greenColor = new Color(0xff00ff00);
- 75 Color blueColor = new Color(0x750000ff, true);
- 76
- 77 Polyline polyline;
- 78 Polygon polygon;
- 79 Polygon polygon1;
- 80
- 81 String pointsdata1
- 82 = "59,45,95,63,108,105,82,139,39,140,11,107,19,65";
- 83 mat1 = new AffineTransform();
- 84 mat1.translate(30, 40);
- 85 mat1.rotate(-30 * Math.PI / 180.0);
- 86 polyline = new Polyline();
- 87 polygon = new Polygon();
- 88 polygon1 = new Polygon();
- 89 Point[] points = Point.fromString(pointsdata1);
- 90 for (int i = 0; i < points.length; i++) {
- 91 polyline.addPoint(points[i].x, points[i].y);
- 92 polygon.addPoint(points[i].x, points[i].y);
- 93 polygon1.addPoint(points[i].x, points[i].y);
- 94 }
- 95 // Clear the canvas with white color.
- 96 graphics2D.clear(Color.WHITE);
- 97
- 98 graphics2D.setAffineTransform(new AffineTransform());
- 99 SolidBrush brush = new SolidBrush(greenColor);
- 100 graphics2D.fillPolygon(brush, polygon);
- 101 graphics2D.setAffineTransform(mat1);
- 102
- 103 brush = new SolidBrush(blueColor);
- 104 com.mapdigit.drawing.Pen pen
- 105 = new com.mapdigit.drawing.Pen(redColor, 5);
- 106 graphics2D.setPenAndBrush(pen, brush);
- 107 graphics2D.fillPolygon(null, polygon1);
- 108 graphics2D.drawPolyline(null, polyline);
- 109
- 110 }
- 111
- 112 }
標(biāo)題名稱:Android開發(fā)速成簡(jiǎn)潔教程十五:RadioButton及路徑繪制
網(wǎng)頁(yè)URL:http://www.dlmjj.cn/article/cdpodgs.html


咨詢
建站咨詢
