資源描述:
《Android Canvas繪圖詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、AndroidCanvas繪圖詳解(圖文)摘要Android中使用圖形處理引擎,2D部分是androidSDK內(nèi)部自己提供,3D部分是用OpenGLES1.0。今天我們主要要了解的是2D相關(guān)的,如果你想看3D的話那么可以跳過(guò)這篇文章。大部分2D使用的api都在android.graphics和android.graphics.drawable包中。他們提供了圖Android中使用圖形處理引擎,2D部分是androidSDK內(nèi)部自己提供,3D部分是用OpenGLES1.0。今天我們主要要了解的是2D相關(guān)的,如果你想看3D的話那么可以跳過(guò)這篇文章。大部分2D使用的
2、api都在android.graphics和android.graphics.drawable包中。他們提供了圖形處理相關(guān)的:Canvas、ColorFilter、Point(點(diǎn))和RetcF(矩形)等,還有一些動(dòng)畫(huà)相關(guān)的:AnimationDrawable、BitmapDrawable和TransitionDrawable等。以圖形處理來(lái)說(shuō),我們最常用到的就是在一個(gè)View上畫(huà)一些圖片、形狀或者自定義的文本內(nèi)容,這里我們都是使用Canvas來(lái)實(shí)現(xiàn)的。你可以獲取View中的Canvas對(duì)象,繪制一些自定義形狀,然后調(diào)用View.invalidate方法讓Vie
3、w重新刷新,然后繪制一個(gè)新的形狀,這樣達(dá)到2D動(dòng)畫(huà)效果。下面我們就主要來(lái)了解下Canvas的使用方法。Canvas對(duì)象的獲取方式有兩種:一種我們通過(guò)重寫(xiě)View.onDraw方法,View中的Canvas對(duì)象會(huì)被當(dāng)做參數(shù)傳遞過(guò)來(lái),我們操作這個(gè)Canvas,效果會(huì)直接反應(yīng)在View中。另一種就是當(dāng)你想創(chuàng)建一個(gè)Canvas對(duì)象時(shí)使用的方法:12Bitmapb=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);Canvasc=newCanvas(b);上面代碼創(chuàng)建了一個(gè)尺寸是100*100的Bitmap,使用它
4、作為Canvas操作的對(duì)象,這時(shí)候的Canvas就是使用創(chuàng)建的方式。當(dāng)你使用創(chuàng)建的Canvas在bitmap上執(zhí)行繪制方法后,你還可以將繪制的結(jié)果提交給另外一個(gè)Canvas,這樣就可以達(dá)到兩個(gè)Canvas協(xié)作完成的效果,簡(jiǎn)化邏輯。但是androidSDK建議使用View.onDraw參數(shù)里提供的Canvas就好,沒(méi)必要自己創(chuàng)建一個(gè)新的Canvas對(duì)象。接下來(lái)我們看看Canvas提供我們哪些繪制圖形的方法。我們創(chuàng)建一個(gè)自定義View對(duì)象,使用onDraw方法提供的Canvas進(jìn)行繪制圖形。CanvasDemoActivity.java:123456package
5、com.android777.demo.uicontroller.graphics;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;187891011121314151617181920212223242526272829303132333435363738394041424344454647importandroid.graphics.Paint;importandroid.o
6、s.Bundle;importandroid.view.View;publicclassCanvasDemoActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(newCustomView1(this));}/***使用內(nèi)部類(lèi)自定義一個(gè)簡(jiǎn)單的View*@authorAdministrator**/classCustomView1extendsView{Pa
7、intpaint;publicCustomView1(Contextcontext){super(context);paint=newPaint();//設(shè)置一個(gè)筆刷大小是3的黃色的畫(huà)筆paint.setColor(Color.YELLOW);paint.setStrokeJoin(Paint.Join.ROUND);paint.setStrokeCap(Paint.Cap.ROUND);paint.setStrokeWidth(3);}//在這里我們將測(cè)試canvas提供的繪制圖形方法@OverrideprotectedvoidonDraw(Canvasca
8、nvas){}}}18執(zhí)行結(jié)果是一片黑