1. 程式人生 > >Android 對View的一些理解

Android 對View的一些理解

這幾天寫了一個在View上模擬一個自由落體運動的小球的Demo,學到了不少東西,也對View有了一定的理解,寫來與大家分享,有錯的地方請大家指出。

Android中的View類是用來畫圖的,自定義一個類繼承View類的話就要實現一個OnDrawf方法,這個方法和Java裡面的Paint函式很像,系統會不斷的呼叫這個OnDraw方法,來重新整理當前的View,於是我們就可以在上面做出動態效果的東西了.

下面來看OnDraw函式:protected void OnDraw(Canvas canvas);

重寫這個函式會得到一個canvas(畫布)引數,這個畫布預設地覆蓋在了當前的View上,你可以在當前畫布上畫畫了,比如有這些方法可以用:

canvas.drawCircle(x, y, 40, mPaint);//畫個圓出來,以x,y為圓心,40為半徑,其中mPaint物件相當於一隻筆,他是Paint類的一個物件,可以定義畫筆的顏色,大小,是否有鋸齒等屬性,如

mPaint = new Paint();//建立畫筆例項
mPaint.setAntiAlias(true);//消除鋸齒
mPaint.setARGB(0, 0xff, 0, 0);//設定畫筆為紅色的

我主要想說的還是Canvas的drawBitmap方法和SetBitmap的方法。

mBitmap = Bitmap.createBitmap(400, 300, Bitmap.Config.RGB_565)

canvas.drawBitmap(mBitmap, 0, 0, null);

drawBitmap這個方法是在當前畫布上(預設為整個手機螢幕的大小,這裡的canvas是OnDraw方法後面的那個引數)再繪製一個長400,寬300的Bitmap(相當於一個新的View蓋在原來的那個手機螢幕大小的View上),就好像Java UI裡面的在容器裡面加容器那種感覺

如果我們要在新的Bitmap上畫圖的話,就可以新定義一個畫布Canvas canvas_new=new Canvas();然後呼叫方法canvas_new.setBitmap(mBitmap);方法,指定當前的畫布是放在剛才我們新定義的400*300的Bitmap上面,如果此時呼叫這個canvas_new的繪畫的方法的話,圖案就會被畫在400*300的View上,而不是整個手機螢幕上。