SurfaceView是繼承於View類的,有繪製動態圖片,播放視頻的做用。View負責在主線程中更新動畫,而在SurfaceView是在一個新線程中更新動畫,而且它是一個2D的畫布效果,將本身放置於屏幕的最低層進行圖畫的顯示,android
SurfaceView的使用方法:函數
1.當單獨創建一個SurfaceView的工程佈局
須要將這個工程繼承SurfaceView 並接口於SurfaceHolder的Callback和Runnable 其中SurfaceHolder是用來監聽畫布,Runnable則是用來開啓一個新進程,在進程中進行畫面的繪製。動畫
public class GameViewOK extends SurfaceView implements Callback, Runnablethis
完成繼承和接口後,會有三個構造函數和一個重載函數,分別爲:surfaceCreated,surfaceChanged,surfaceDestroyed以及GameViewOK(例子),其中三個構造函數分別表示SurfaceView在建立,改變和毀壞時要作的相關處理,通常圖形的繪製放在surfaceChanged中進行。在重載函數中使用代碼spa
surfaceHolder = this.getHolder();線程
surfaceHolder.addCallback(this);//註冊回調方法指針
來設置SurfaceHoler並添加回調方法,不添加這個回調會報空指針異常,SurfaceHolder至關於遙控器來控制SurfaceView。視頻
SurfaceView主要用來繪製圖片,經過線程來實現畫面的動畫效果,在繪製圖畫的過程當中,須要三個步驟:對象
(1)獲取畫布並鎖定畫布
Canves = SurfaceHolder.lockCanvas()
(2)而後在畫布中進行繪畫的操做
(3)繪製完畢後,使用SurfaceHolder.unlockCanvas方法來解鎖畫布,以供後續的操做。
2.在mianActivity中添加surfaceview
一樣是先創建一個JAVA類繼承surfaceview並接口於surfaceHolder.Callback,Runnable。而後在mainActivity中建立類對象,在setContext中添加此類。例如: gameViewOK = new GameViewOK(this);
setContentView(gameViewOK);
3.在surfaceView上添加控件
當須要在SurfaceView上添加控件時,只需將繼承於SurfaceView的類以控件的形式添加到佈局文件便可。
<ControlTool.surfaceView
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
這樣就能夠在surfaceview上添加其餘控件。