您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Android開發中如何理解RadioButton及路徑繪制,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
這個例子是繪制多邊形,多義形和路徑,采用單選鈕RadioButton來選擇Polys 和Path示例:
UI 設計為 上部分用來顯示繪圖內容,下部分為兩個單選按鈕 Polys ,Path。這樣layout就和main.xml 不一樣,main.xml只含一個com.pstreets.graphics2d.GuidebeeGraphics2DView。因此需在 res\layout下新建一個polys.xml:
<?xml version=”1.0″ encoding=”utf-8″?> <LinearLayout xmlns:android=”http://schemas.android.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://schemas.android.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); }
應為需要處理按鍵消息,所以定義了兩個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及路徑繪制就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。