Android只SurfaceView學習(1)

在android中,SurfaceView是可以作爲一種繪圖容器的,可以直接從內存或者DMA中通過接口取得數據並顯示。

在new一個SurfaceView的時候,一般都要調用他的getHolder()方法來得到他的SurfaceHolder接口。


SurfaceHolder:它是Surface的一個抽象接口,通過它你可以控制Surface的大小和格式。以及在surface上編輯圖像,和見識surface的改變。

一般在用到這個的時候都要調用addCallback來實現其中的surfaceChanged,surfaceCreated,surfaceDestroyed方法。

它的方法中getSurfaceFrame 只有在調用SurfaceView 的線程中或者在lockCanvas之後才安全。


我們再來看看Surface,它其實是一個句柄,其中他有一個Canvas的對象,通過這個句柄,我們就可以在Canvas上進行畫圖,畫完之後進行提交(由緩存或者是哪裏數據顯示到頁面上)。

回到SurfaceView,它裏面就有了Surface,具體實現過程:

得到一個SyrfaceView對象--->實現SurfaceHolder.Callback接口 ----> SurfaceView.getHolder()獲得SurfaceHolder對象 ---->SurfaceHolder.addCallback(callback)添加回調函數---->SurfaceHolder.lockCanvas()獲得Canvas對象並鎖定畫布----> Canvas繪畫 ---->SurfaceHolder.unlockCanvasAndPost(Canvas canvas)結束鎖定畫圖,並提交改變,將圖形顯示。 注意的是,在調用surfaceCreated之後肯定會調用至少一次的surfaceChanged,個人理解是創建也是Change的一種嘛。。。在這之後得到了canvas對象,就可以任由我們發揮了。(新手的隨筆,勿噴)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章