这个例子是绘制多边形,多义形和路径,采用单选钮RadioButton来选择Polys 和Path示例:

创新互联主营云城网站建设的网络公司,主营网站建设方案,重庆APP开发,云城h5微信小程序搭建,云城网站营销推广欢迎云城等地区企业咨询
UI 设计为 上部分用来显示绘图内容,下部分为两个单选按钮 Polys ,Path。这样layout就和main.xml 不一样,main.xml只含一个com.pstreets.graphics2d.GuidebeeGraphics2DView。因此需在 res\layout下新建一个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中做为一个分组,这里将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);
 - }
 
应为需要处理按键消息,所以定义了两个RadioButton对象,可以通过findViewById获取实例。因为两个RadioButton这里采用 同样的处理方法,可以让Path实现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 }
 
                分享名称:Android开发速成简洁教程十五:RadioButton及路径绘制
                
                网站URL:http://www.csdahua.cn/qtweb/news21/63221.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网