日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android開發(fā)速成簡潔教程十三:OptionMenu畫筆示例

引路蜂二維圖形畫筆(Pen)示例含有四個示例,Lines ,Dashes ,LineJoin 和LineCap。打算采用Option Menu(主菜單)的方式來選擇不同示例。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站制作、成都網(wǎng)站制作、石屏網(wǎng)絡推廣、小程序開發(fā)、石屏網(wǎng)絡營銷、石屏企業(yè)策劃、石屏品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供石屏建站搭建服務,24小時服務熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

首先要對GuidebeeGraphics2DView,和Graphics2DActivity做些改動,從這個示例開 始,GuidebeeGraphics2DView需要動態(tài)繪制不同圖形(可以通過菜單,或是Thread)。在 GuidebeeGraphics2DView增加下面兩個方法:

 
 
 
 
  1. final Runnable updateCanvas = new Runnable() {
  2.      public void run() {
  3.       invalidate();
  4.      }
  5.     };   
  6.     public void refreshCanvas(){
  7.      post(updateCanvas);
  8.     }

post可以用在非UI Thread中Call UI Thread中方法。這里只是觸發(fā)屏幕重繪事件以刷新屏幕顯示。

在Graphics2DActivity增加一個變量protected GuidebeeGraphics2DView graphic2dView; 來獲得對應的GuidebeeGraphics2DView實例。

graphic2dView=(GuidebeeGraphics2DView)findViewById(R.id.graphics2dview);

使用Option Menu,盡管也可以完全使用代碼來創(chuàng)建菜單,更一般的方法是使用菜單資源。在res 下創(chuàng)建menu 子目錄,然后在res\menu下創(chuàng)建menu_option_line.xml 用來顯示Pen的四個示例選項:

 
 
 
 
  1.   xmlns:android=”http://schemas.android.com/apk/res/android“>
  2.  android:id=”@+id/mnuLines”
  3.  android:title=”Lines”
  4.  android:icon=”@drawable/icon1″>
  5.  android:id=”@+id/mnuDashes”
  6.  android:title=”Dashes”
  7.  android:icon=”@drawable/icon2″>
  8.  android:id=”@+id/mnuLineCap”
  9.  android:title=”LineCap”
  10.  android:icon=”@drawable/icon3″>
  11.  android:id=”@+id/mnuLineJoin”
  12.  android:title=”LineJoin”
  13.  android:icon=”@drawable/icon4″>

定義菜單,定義菜單項,可以嵌套以定義子菜單。 菜單可以定義id, Icon,Text等屬性。也可以支持單選,多選,此時就需要借助,使用group可以把一最菜 單項定義為一個組,可以使用setGroupVisible()來顯示隱藏整個菜單組,Enable 或是Disable整個菜單組setGroupEnabled()等。最關(guān)鍵的,有了組才能實現(xiàn)菜單的單選和多選功能:

 
 
 
 
  1.    
  2.  
  3.  android:icon=”@drawable/item1″         
  4.  android:title=”@string/item1″ />   
  5.     
  6.         
  7.   
  8.   android:title=”@string/groupItem1″ />       
  9.   
  10.   android:title=”@string/groupItem2″ />   
  11.  

定義好菜單資源后,就可以使用MenuInflater.inflate()展開菜單,一般需要在Activity的onCreateOptionsMenu()展開菜單:

 
 
 
 
  1. @Override
  2.     public boolean onCreateOptionsMenu(Menu menu) {
  3.      MenuInflater inflater = getMenuInflater();
  4.      inflater.inflate(R.menu.menu_option_line, menu);
  5.      return true;
  6.     }

最后是響應菜單事件:

 
 
 
 
  1. @Override
  2.     public boolean onOptionsItemSelected(MenuItem item) {
  3.      menuOption = item.getItemId();
  4.      drawImage();
  5.      return true;
  6.     }

item.getItemId(); 返回菜單的ID(在菜單資源中定義)。

完整代碼如下:

 
 
 
 
  1. 1 public class Pen extends Graphics2DActivity {
  2. 2    
  3. 3    int menuOption;
  4. 4    
  5. 5    @Override
  6. 6    protected void drawImage() {
  7. 7     switch (menuOption) {
  8. 8     case R.id.mnuLines:
  9. 9      drawLines();
  10. 10     break;
  11. 11   
  12. 12    case R.id.mnuDashes:
  13. 13     drawDash();
  14. 14     break;
  15. 15   
  16. 16    case R.id.mnuLineCap:
  17. 17     drawLineCap();
  18. 18     break;
  19. 19   
  20. 20    case R.id.mnuLineJoin:
  21. 21     drawLineJoin();
  22. 22     break;
  23. 23    default:
  24. 24     drawLines();
  25. 25     break;
  26. 26   
  27. 27    }
  28. 28    graphic2dView.refreshCanvas();
  29. 29   
  30. 30   }
  31. 31   
  32. 32   @Override
  33. 33   public boolean onCreateOptionsMenu(Menu menu) {
  34. 34    MenuInflater inflater = getMenuInflater();
  35. 35    inflater.inflate(R.menu.menu_option_line, menu);
  36. 36    return true;
  37. 37   }
  38. 38   
  39. 39   @Override
  40. 40   public boolean onOptionsItemSelected(MenuItem item) {
  41. 41    menuOption = item.getItemId();
  42. 42    drawImage();
  43. 43    return true;
  44. 44   }
  45. 45   
  46. 46   private void drawLineJoin() {
  47. 47    Color blackColor = new Color(0xff000000);
  48. 48    Color whiteColor = new Color(0xffffffff);
  49. 49   
  50. 50    com.mapdigit.drawing.geometry.Path path
  51. 51      = new com.mapdigit.drawing.geometry.Path();
  52. 52    path.moveTo(40, 60);
  53. 53    path.lineTo(90, 20);
  54. 54    path.lineTo(140, 60);
  55. 55    // Clear the canvas with white color.
  56. 56    graphics2D.clear(Color.WHITE);
  57. 57   
  58. 58    AffineTransform matrix = new AffineTransform();
  59. 59    graphics2D.setAffineTransform(matrix);
  60. 60    com.mapdigit.drawing.Pen pen
  61. 61       = new com.mapdigit.drawing.Pen(blackColor,
  62. 62      20, com.mapdigit.drawing.Pen.CAP_BUTT,
  63. 63      com.mapdigit.drawing.Pen.JOIN_MITER);
  64. 64    graphics2D.draw(pen, path);
  65. 65    pen = new com.mapdigit.drawing.Pen(whiteColor, 1);
  66. 66    graphics2D.draw(pen, path);
  67. 67   
  68. 68    matrix.translate(0, 50);
  69. 69    graphics2D.setAffineTransform(matrix);
  70. 70   
  71. 71    pen = new com.mapdigit.drawing.Pen(blackColor, 20,
  72. 72      com.mapdigit.drawing.Pen.CAP_BUTT,
  73. 73      com.mapdigit.drawing.Pen.JOIN_ROUND);
  74. 74    graphics2D.draw(pen, path);
  75. 75    pen = new com.mapdigit.drawing.Pen(whiteColor, 1);
  76. 76    graphics2D.draw(pen, path);
  77. 77   
  78. 78    matrix = new AffineTransform();
  79. 79    matrix.translate(0, 100);
  80. 80    graphics2D.setAffineTransform(matrix);
  81. 81   
  82. 82    pen = new com.mapdigit.drawing.Pen(blackColor, 20,
  83. 83      com.mapdigit.drawing.Pen.CAP_BUTT,
  84. 84      com.mapdigit.drawing.Pen.JOIN_BEVEL);
  85. 85    graphics2D.draw(pen, path);
  86. 86    pen = new com.mapdigit.drawing.Pen(whiteColor, 1);
  87. 87    graphics2D.draw(pen, path);
  88. 88   
  89. 89   }
  90. 90   
  91. 91   private void drawLineCap() {
  92. 92    Color blackColor = new Color(0xff000000);
  93. 93    Color whiteColor = new Color(0xffffffff);
  94. 94    // Clear the canvas with white color.
  95. 95    graphics2D.clear(Color.WHITE);
  96. 96    AffineTransform matrix = new AffineTransform();
  97. 97    graphics2D.setAffineTransform(matrix);
  98. 98   
  99. 99    com.mapdigit.drawing.Pen pen
  100. 100       = new com.mapdigit.drawing.Pen(blackColor,
  101. 101     20, com.mapdigit.drawing.Pen.CAP_BUTT,
  102. 102     com.mapdigit.drawing.Pen.JOIN_MITER);
  103. 103   graphics2D.drawLine(pen, 40, 60, 140, 60);
  104. 104   pen = new com.mapdigit.drawing.Pen(whiteColor, 1);
  105. 105   graphics2D.drawLine(pen, 40, 60, 140, 60);
  106. 106  
  107. 107   pen = new com.mapdigit.drawing.Pen(blackColor, 20,
  108. 108     com.mapdigit.drawing.Pen.CAP_ROUND,
  109. 109     com.mapdigit.drawing.Pen.JOIN_MITER);
  110. 110   graphics2D.drawLine(pen, 40, 100, 140, 100);
  111. 111   pen = new com.mapdigit.drawing.Pen(whiteColor, 1);
  112. 112   graphics2D.drawLine(pen, 40, 100, 140, 100);
  113. 113  
  114. 114   pen = new com.mapdigit.drawing.Pen(blackColor, 20,
  115. 115     com.mapdigit.drawing.Pen.CAP_SQUARE,
  116. 116     com.mapdigit.drawing.Pen.JOIN_MITER);
  117. 117   graphics2D.drawLine(pen, 40, 140, 140, 140);
  118. 118   pen = new com.mapdigit.drawing.Pen(whiteColor, 1);
  119. 119   graphics2D.drawLine(pen, 40, 140, 140, 140);
  120. 120  }
  121. 121  
  122. 122  private void drawLines() {
  123. 123   Color greenColor = new Color(0xff00ff00);
  124. 124   // Clear the canvas with white color.
  125. 125   graphics2D.clear(Color.WHITE);
  126. 126   AffineTransform matrix = new AffineTransform();
  127. 127   graphics2D.setAffineTransform(matrix);
  128. 128  
  129. 129   com.mapdigit.drawing.Pen pen
  130. 130     = new com.mapdigit.drawing.Pen(greenColor,1);
  131. 131   graphics2D.drawLine(pen, 20, 150, 60, 50);
  132. 132  
  133. 133   pen = new com.mapdigit.drawing.Pen(greenColor, 2);
  134. 134   graphics2D.drawLine(pen, 40, 150, 80, 50);
  135. 135  
  136. 136   pen = new com.mapdigit.drawing.Pen(greenColor, 3);
  137. 137   graphics2D.drawLine(pen, 60, 150, 100, 50);
  138. 138  
  139. 139   pen = new com.mapdigit.drawing.Pen(greenColor, 5);
  140. 140   graphics2D.drawLine(pen, 80, 150, 120, 50);
  141. 141  
  142. 142   pen = new com.mapdigit.drawing.Pen(greenColor, 7);
  143. 143   graphics2D.drawLine(pen, 100, 150, 140, 50);
  144. 144  
  145. 145   pen = new com.mapdigit.drawing.Pen(greenColor, 10);
  146. 146   graphics2D.drawLine(pen, 120, 150, 160, 50);
  147. 147  
  148. 148  }
  149. 149  
  150. 150  private void drawDash() {
  151. 151   Color blackColor = new Color(0xff000000);
  152. 152   int dashArray1[] = { 2, 2 };
  153. 153   int dashArray2[] = { 6, 6 };
  154. 154   int dashArray3[] = { 4, 1, 2, 1, 1, 6 };
  155. 155   // Clear the canvas with white color.
  156. 156   graphics2D.clear(Color.WHITE);
  157. 157   AffineTransform matrix = new AffineTransform();
  158. 158   graphics2D.setAffineTransform(matrix);
  159. 159  
  160. 160   com.mapdigit.drawing.Pen pen
  161. 161       = new com.mapdigit.drawing.Pen(blackColor,
  162. 162     20, com.mapdigit.drawing.Pen.CAP_BUTT,
  163. 163     com.mapdigit.drawing.Pen.JOIN_MITER, dashArray1, 0);
  164. 164   graphics2D.drawLine(pen, 40, 60, 140, 60);
  165. 165  
  166. 166   pen = new com.mapdigit.drawing.Pen(blackColor, 20,
  167. 167     com.mapdigit.drawing.Pen.CAP_BUTT,
  168. 168     com.mapdigit.drawing.Pen.JOIN_MITER, dashArray2, 0);
  169. 169   graphics2D.drawLine(pen, 40, 100, 140, 100);
  170. 170  
  171. 171   pen = new com.mapdigit.drawing.Pen(blackColor, 20,
  172. 172     com.mapdigit.drawing.Pen.CAP_BUTT,
  173. 173     com.mapdigit.drawing.Pen.JOIN_MITER, dashArray3, 0);
  174. 174   graphics2D.drawLine(pen, 40, 140, 140, 140);
  175. 175  }
  176. 176 }

網(wǎng)站名稱:Android開發(fā)速成簡潔教程十三:OptionMenu畫筆示例
瀏覽路徑:http://m.5511xx.com/article/dhdhisc.html