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