android中的surfaceview控件

SurfaceView是繼承於View類的,有繪製動態圖片,播放視頻的做用。View負責在主線程中更新動畫,而在SurfaceView是在一個新線程中更新動畫,而且它是一個2D的畫布效果,將本身放置於屏幕的最低層進行圖畫的顯示,android

SurfaceView的使用方法:函數

1.當單獨創建一個SurfaceView的工程佈局

須要將這個工程繼承SurfaceView 並接口於SurfaceHolderCallbackRunnable  其中SurfaceHolder是用來監聽畫布,Runnable則是用來開啓一個新進程,在進程中進行畫面的繪製。動畫

public class GameViewOK extends SurfaceView implements Callback, Runnablethis

完成繼承和接口後,會有三個構造函數和一個重載函數,分別爲:surfaceCreatedsurfaceChangedsurfaceDestroyed以及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上添加其餘控件。

相關文章
相關標籤/搜索