View的繪制(Android群英傳)

內容是博主照著書敲出來的,博主碼字挺辛苦的,轉載請注明出處,后序內容陸續會碼出。

這篇文章應該在View的測量之后的,忘了發表,233333
  當測量好了一個View之后,我們就可以簡單地重寫onDraw()方法,并在Canvas對象上來繪制所需要的圖形。首先我們來了解一下利用系統2D繪圖API所必須要使用道德Canvas對象。
  要想在Android的界面中繪制相應的圖像,就必須在Canvas上進行繪制。Canvas就像是一個畫板,使用Paint就可以在上面作畫了。通常需要通過繼承View并重寫它的onDraw()方法來完成繪圖。
  那什么是Canvas呢?一般情況下,可以使用重寫View類中的onDraw()方法來繪圖,onDraw()中有一個參數,就是Canvas canvas對象。使用這個Canvas對象就可以進行繪圖了,而在其他地方,通常需要使用代碼創建一個Canvas對象,代碼如下所示。

Canvas canvas = new Canvas(bitmap);

當創建一個Canvas對象時,為什么要傳進去一個bitmap對象呢?如果不傳進入一個bitmap對象,IDE編譯雖然不會報錯,但是一般我們不會這樣做。這是因為傳進去的bitmap與通過這個bitmap創建的Canvas畫布是緊緊聯系在一起的,這個過程我們稱之為裝載畫布。這個bitmap用來存儲所有繪制在Canvas上的像素信息。所以當你通過這種方式創建了Canvas對象后,后面調用所有的Canvas.drawXXX方法都發生在這個bitmap上。如果在View類的onQraw()方法中,通過下面這段代碼,我們可以了解到canvas與bitmap直接的關系。首先在onDraw方法中繪制兩個bitmap,代碼如下所示。

canvas.drawBiimap(bitmap1, 0, 0, null);
canvas.drawBitmap(bitmap2, 0, 0, null);

而對于bitmap2,我們將它裝載到另一個Canvas對象中,代碼如下所示。

Canvas mCanvas=new Canvas(bitmap2);

在其他地方使用Canvas對象的繪圖方法在裝載bitmap2的Canvas對象上進行繪圖,代碼如下所示。

mCanvas.drawXXX

通過mCanvas將繪制效果作用在了bitmap2上,再刷新View的時候,就會發現通過onDraw()方法畫出來的bitmap2已經發生變化,這就是因為bitmap2承載了在mCanvas上所進行的繪圖操作。雖然我們也使用了Canvas的繪制API,但其實并沒有將圖形直接繪制在onDraw()方法指定的那塊畫布上,而是通過改變bitmap,然后讓View重繪,從而顯示改變之后的bitmap。這一過程對初學者來說可能非常難以理解,但是卻非常重要,這對后續進行深入地學習和提升繪圖技巧非常有幫助。
  在理解了Canvas對象后,我們就可以調用Canvas所提供的繪圖方法,來繪制自己想要的圖形了。不管是多么復雜、精美的控件,它都可以被拆分成一個個小的圖形單元,我們要做的正是找到這些小的繪圖單元并將它們繪制出來。


原文地址View的繪制(Android群英傳)
我的自媒體博客blankj小站,歡迎來逛逛。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容