この例では、ラジオボタンで Polys と Paths を選択し、ポリゴン、ポリ、パスを描画します。
<?xml version=”1.0 encoding=”utf-8 ?>
<LinearLayout xmlns:android=”http://..com/apk/res/android”
android:orientation=”vertical”
android:background=”@drawable/white”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”>
<com.pstreets.graphics2d.GuidebeeGraphics2DView
android:id=”@+id/graphics2dview”
android:layout_weight=”1″
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”/>
<LinearLayout xmlns:android=”http://..com/apk/res/android”
android:layout_width=”wrap_content” android:layout_height=”wrap_content”
android:orientation=”horizontal”
>
<RadioGroup
android:layout_width=”wrap_content”
android:orientation=”horizontal”
android:textSize=”20dp”
android:layout_height=”wrap_content”>
<RadioButton android:text=”Polys”
android:id=”@+id/radioPolys”
android:layout_width=”wrap_content”
android:textColor=”@color/black”
android:checked=”true”
android:layout_height=”wrap_content”>
</RadioButton>
<RadioButton android:text=”Path”
android:id=”@+id/radioPath”
android:layout_width=”wrap_content”
android:textColor=”@color/black”
android:layout_height=”wrap_content”>
</RadioButton>
</RadioGroup>
</LinearLayout>
</LinearLayout>
RadioButtonはグループとしてRadioGroupに含める必要があり、ここではPolysが選択されるように設定されています。
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);
}
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 }





