天天看點

【Android開發】範例2-實作簡易繪圖闆

下面這個執行個體通過前面學過的paint、canvas等2d繪畫技術來實作一個簡單的android的繪圖闆。

具體實作代碼:

建立一個名為drawview的類,該類繼承自android.view.view類。在該類中,首先定義程式中所需的屬性,然後添加構造方法,并重寫ondraw(canvas canvas)方法:

drawview.java:

建立布局檔案,選擇幀布局,并加入上面建立的繼承了view的自定義畫圖控件:

res/layout/main.xml

在drawview類的構造方法中,首先擷取螢幕的高度和寬度,并建立一個與該view相同大小的緩存區,然後建立一個新的畫面,并執行個體化一個路徑,再将記憶體中的位圖繪制到cachecanvas中,最後執行個體化一個畫筆,并設定畫筆的相關屬性。

關鍵代碼如下:

在drawview類的ondraw()方法中,添加以下代碼,用于設定背景顔色、繪制cachebitmap、繪制路徑以及儲存目前繪圖狀态到棧中,并調用restore()方法恢複所儲存的狀态,關鍵代碼如下:

在draw類中,重寫ontouchevent()方法,為該視圖添加觸摸事件監聽器,在該方法中,首先擷取觸摸事件發生的位置,然後用switch語句對事件的不同狀态添加響應代碼,最後調用invalidate()方法更新視圖。具體代碼如下:

編寫clear()方法,用于實作橡皮擦功能,具體代碼如下:

編寫儲存目前繪圖的save方法,在該方法中,調用savebitmap()方法将目前繪圖儲存為png圖檔。save()方法的具體代碼如下:

編寫儲存繪制好的位圖的方法savebitmap(),在該方法中,首先在sd卡上建立一個檔案,然後建立一個檔案輸出流對象,并調用bitmap類的compress()方法将繪圖内容壓縮為png格式輸出到剛剛建立的檔案輸出流對象中,最後将緩沖區的資料全部寫出到輸出流中,并關閉檔案輸出流對象。savebitmap()方法的具體代碼如下:

在程式中需要向sd卡上儲存檔案,那麼需要在androidmanifest.xml檔案中賦予相應的權限,

具體代碼入下:

在res目錄中,建立一個menu目錄,并在該目錄中建立一個名稱為toolsmenu.xml的菜單資源檔案,在該檔案中編寫執行個體中所應用的功能菜單,關鍵代碼如下:

其中values/strings.xml中:

在預設建立的mainactivity中,為執行個體添加選項菜單。

首先,重寫oncreatoptionsmenu()方法,在該方法中,執行個體化一個menuinflater對象,并調用該對象的inflate方法解析toolsmenu.xml的菜單資源檔案。具體代碼如下:

然後,重寫onoptionsitemselected方法,分别對各個菜單項被選擇時做出相應的處理,具體代碼如下:

運作效果如圖

【Android開發】範例2-實作簡易繪圖闆

轉載請注明出處:http://blog.csdn.net/acmman/article/details/45460663

繼續閱讀