Android开发速成简洁教程十五:RadioButton及路径绘制

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

创新互联主营云城网站建设的网络公司,主营网站建设方案,重庆APP开发,云城h5微信小程序搭建,云城网站营销推广欢迎云城等地区企业咨询

UI 设计为 上部分用来显示绘图内容,下部分为两个单选按钮 Polys ,Path。这样layout就和main.xml 不一样,main.xml只含一个com.pstreets.graphics2d.GuidebeeGraphics2DView。因此需在 res\layout下新建一个polys.xml:

 
 
 
 
  1.  
  2.     android:orientation=”vertical” 
  3.     android:background=”@drawable/white” 
  4.  android:layout_width=”fill_parent” 
  5.  android:layout_height=”fill_parent”> 
  6.     
  7.      android:id=”@+id/graphics2dview” 
  8.      android:layout_weight=”1″ 
  9.      android:layout_width=”fill_parent” 
  10.      android:layout_height=”wrap_content”/> 
  11.  
  12.   android:layout_width=”wrap_content” android:layout_height=”wrap_content” 
  13.   android:orientation=”horizontal” 
  14.    
  15.   > 
  16.   
  17.      android:layout_width=”wrap_content” 
  18.      android:orientation=”horizontal” 
  19.      android:textSize=”20dp” 
  20.      android:layout_height=”wrap_content”> 
  21.    
  22.        android:id=”@+id/radioPolys” 
  23.     android:layout_width=”wrap_content” 
  24.     android:textColor=”@color/black” 
  25.     android:checked=”true” 
  26.     android:layout_height=”wrap_content”> 
  27.     
  28.    
  29.         android:id=”@+id/radioPath” 
  30.     android:layout_width=”wrap_content” 
  31.     android:textColor=”@color/black” 
  32.     android:layout_height=”wrap_content”> 
  33.     
  34.    
  35.   
  36.  
  37.  

RadioButton 需包含在RadioGroup中做为一个分组,这里将Polys 设为选中。

定义好Layout资源后,修改 Path.java

 
 
 
 
  1. private RadioButton radioPoly; 
  2.     private RadioButton radioPath;    
  3.     public void onCreate(Bundle savedInstanceState) { 
  4.      super.onCreate(savedInstanceState); 
  5.      setContentView(R.layout.polys); 
  6.      graphic2dView 
  7.       = (GuidebeeGraphics2DView) 
  8.         findViewById(R.id.graphics2dview); 
  9.      radioPath = (RadioButton) findViewById(R.id.radioPath); 
  10.      radioPoly = (RadioButton) findViewById(R.id.radioPolys); 
  11.      radioPath.setOnClickListener(this); 
  12.      radioPoly.setOnClickListener(this); 
  13.     } 

应为需要处理按键消息,所以定义了两个RadioButton对象,可以通过findViewById获取实例。因为两个RadioButton这里采用 同样的处理方法,可以让Path实现OnClickListener ,即:public class Path extends Graphics2DActivity   implements OnClickListener。完整代码如下:

 
 
 
 
  1. 1   public class Path extends Graphics2DActivity 
  2. 2      implements OnClickListener { 
  3. 3     
  4. 4       private RadioButton radioPoly; 
  5. 5       private RadioButton radioPath; 
  6. 6     
  7. 7       public void onCreate(Bundle savedInstanceState) { 
  8. 8           super.onCreate(savedInstanceState); 
  9. 9           setContentView(R.layout.polys); 
  10. 10          graphic2dView 
  11. 11           = (GuidebeeGraphics2DView) 
  12. 12             findViewById(R.id.graphics2dview); 
  13. 13          radioPath = (RadioButton) findViewById(R.id.radioPath); 
  14. 14          radioPoly = (RadioButton) findViewById(R.id.radioPolys); 
  15. 15          radioPath.setOnClickListener(this); 
  16. 16          radioPoly.setOnClickListener(this); 
  17. 17      } 
  18. 18    
  19. 19      @Override 
  20. 20      protected void drawImage() { 
  21. 21          if (radioPoly.isChecked()) { 
  22. 22              drawPolys(); 
  23. 23          } else { 
  24. 24              drawPaths(); 
  25. 25          } 
  26. 26          graphic2dView.refreshCanvas(); 
  27. 27    
  28. 28      } 
  29. 29    
  30. 30      @Override 
  31. 31      public void onClick(View view) { 
  32. 32          drawImage(); 
  33. 33      } 
  34. 34    
  35. 35      private void drawPaths() { 
  36. 36          AffineTransform mat1; 
  37. 37    
  38. 38          // The path. 
  39. 39          com.mapdigit.drawing.geometry.Path path; 
  40. 40    
  41. 41          // Colors 
  42. 42          Color redColor = new Color(0x96ff0000, true); 
  43. 43          Color greenColor = new Color(0xff00ff00); 
  44. 44          Color blueColor = new Color(0x750000ff, true); 
  45. 45    
  46. 46          String pathdata 
  47. 47             = "M 60 20 Q -40 70 60 120 Q 160 70 60 20 z"; 
  48. 48          mat1 = new AffineTransform(); 
  49. 49          mat1.translate(30, 40); 
  50. 50          mat1.rotate(-30 * Math.PI / 180.0); 
  51. 51          path = com.mapdigit.drawing.geometry.Path.fromString(pathdata); 
  52. 52          // Clear the canvas with white color. 
  53. 53          graphics2D.clear(Color.WHITE); 
  54. 54    
  55. 55          graphics2D.setAffineTransform(new AffineTransform()); 
  56. 56          SolidBrush brush = new SolidBrush(greenColor); 
  57. 57          graphics2D.fill(brush, path); 
  58. 58          graphics2D.setAffineTransform(mat1); 
  59. 59    
  60. 60          brush = new SolidBrush(blueColor); 
  61. 61          com.mapdigit.drawing.Pen pen 
  62. 62             = new com.mapdigit.drawing.Pen(redColor, 5); 
  63. 63          graphics2D.setPenAndBrush(pen, brush); 
  64. 64          graphics2D.draw(null, path); 
  65. 65          graphics2D.fill(null, path); 
  66. 66    
  67. 67      } 
  68. 68    
  69. 69      private void drawPolys() { 
  70. 70          AffineTransform mat1; 
  71. 71    
  72. 72          // Colors 
  73. 73          Color redColor = new Color(0x96ff0000, true); 
  74. 74          Color greenColor = new Color(0xff00ff00); 
  75. 75          Color blueColor = new Color(0x750000ff, true); 
  76. 76    
  77. 77          Polyline polyline; 
  78. 78          Polygon polygon; 
  79. 79          Polygon polygon1; 
  80. 80    
  81. 81          String pointsdata1 
  82. 82          = "59,45,95,63,108,105,82,139,39,140,11,107,19,65"; 
  83. 83          mat1 = new AffineTransform(); 
  84. 84          mat1.translate(30, 40); 
  85. 85          mat1.rotate(-30 * Math.PI / 180.0); 
  86. 86          polyline = new Polyline(); 
  87. 87          polygon = new Polygon(); 
  88. 88          polygon1 = new Polygon(); 
  89. 89          Point[] points = Point.fromString(pointsdata1); 
  90. 90          for (int i = 0; i < points.length; i++) { 
  91. 91              polyline.addPoint(points[i].x, points[i].y); 
  92. 92              polygon.addPoint(points[i].x, points[i].y); 
  93. 93              polygon1.addPoint(points[i].x, points[i].y); 
  94. 94          } 
  95. 95          // Clear the canvas with white color. 
  96. 96          graphics2D.clear(Color.WHITE); 
  97. 97    
  98. 98          graphics2D.setAffineTransform(new AffineTransform()); 
  99. 99          SolidBrush brush = new SolidBrush(greenColor); 
  100. 100         graphics2D.fillPolygon(brush, polygon); 
  101. 101         graphics2D.setAffineTransform(mat1); 
  102. 102   
  103. 103         brush = new SolidBrush(blueColor); 
  104. 104         com.mapdigit.drawing.Pen pen 
  105. 105            = new com.mapdigit.drawing.Pen(redColor, 5); 
  106. 106         graphics2D.setPenAndBrush(pen, brush); 
  107. 107         graphics2D.fillPolygon(null, polygon1); 
  108. 108         graphics2D.drawPolyline(null, polyline); 
  109. 109   
  110. 110     } 
  111. 111   
  112. 112 } 

分享名称:Android开发速成简洁教程十五:RadioButton及路径绘制
网站URL:http://www.csdahua.cn/qtweb/news21/63221.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网