1. 程式人生 > >Android SurfaceView使用詳解

Android SurfaceView使用詳解

  1. SurfaceView的定義
    前面已經介紹過View了,下面來簡單介紹一下SurfaceView,參考SDK文件和網路資料:SurfaceView是View的子類,它內嵌了一個專門用於繪製的Surface,你可以控制這個Surface的格式和尺寸,Surfaceview控制這個Surface的繪製位置。surface是縱深排序(Z-ordered)的,說明它總在自己所在視窗的後面。SurfaceView提供了一個可見區域,只有在這個可見區域內的surface內容才可見。surface的排版顯示受到檢視層級關係的影響,它的兄弟檢視結點會在頂端顯示。這意味者 surface的內容會被它的兄弟檢視遮擋,這一特性可以用來放置遮蓋物(overlays)(例如,文字和按鈕等控制元件)。注意,如果surface上面有透明控制元件,那麼每次surface變化都會引起框架重新計算它和頂層控制元件的透明效果,這會影響效能。
    SurfaceView預設使用雙緩衝技術的,它支援在子執行緒中繪製圖像,這樣就不會阻塞主執行緒了,所以它更適合於遊戲的開發。

  2. SurfaceView的使用
    首先繼承SurfaceView,並實現SurfaceHolder.Callback介面,實現它的三個方法:surfaceCreated,surfaceChanged,surfaceDestroyed。
    surfaceCreated(SurfaceHolder holder):surface建立的時候呼叫,一般在該方法中啟動繪圖的執行緒。
    surfaceChanged(SurfaceHolder holder, int format, int width,int height):surface尺寸發生改變的時候呼叫,如橫豎屏切換。
    surfaceDestroyed(SurfaceHolder holder) :surface被銷燬的時候呼叫,如退出遊戲畫面,一般在該方法中停止繪圖執行緒。
    還需要獲得SurfaceHolder,並添加回調函式,這樣這三個方法才會執行。