999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SurfaceView在Android游戲開發(fā)中的研究

2014-09-16 01:52:37易國平
學(xué)周刊·下旬刊 2014年6期

易國平

摘要:目前,Android平臺的市場份額已經(jīng)躍居全球第一,其平臺的開發(fā)性讓越來越多的人加入Android平臺的游戲開發(fā)。在游戲開發(fā),程序運(yùn)行的元素越來越多,要讓程序員自己控制刷新屏幕,就需用到類庫SurfaceView。因此SurfaceView在游戲開發(fā)中尤為重要,本文就SurfaceView在開發(fā)中用到的相關(guān)屬性和方法做詳細(xì)說明,以幫助大家對SurfaceView快速的了解。

關(guān)鍵詞:Android SurfaceView 游戲開發(fā)

近年來,Android平臺越來越火爆,其市場份額已占全球第一。隨著科技水平的進(jìn)步和android平臺的領(lǐng)先,Android的游戲開發(fā)是程序員的新的發(fā)展方向。Android普通程序開發(fā)的UI線程更新畫面,是由程序后臺控制,這是被動更新畫面。簡單的棋牌類游戲開發(fā)可以,但是實時互動的游戲就需要自我掌控屏幕的刷新。而SurfaceView類就是在這種情況產(chǎn)生的,它在一個新啟動的線程中重新繪制畫面,主動更新畫面。

一、SurfaceView簡介

說到SurfaceView類,就需要先介紹下它的父類View,View一般在onDraw方法里面繪圖,onDraw在UI主線程執(zhí)行。onDraw默認(rèn)只在View初始化的時候調(diào)用一遍,所以View不會自動刷新畫面,一般要調(diào)用invalidate或者postInvalidate來重新執(zhí)行onDraw里面的代碼進(jìn)行刷新畫面。SurfaceView也可以在onDraw方法里面繪圖,即直接在UI主線程繪圖并渲染,因為SurfaceView是View的子類。上面已經(jīng)介紹,繪圖完畢后只能在UI主線程內(nèi)渲染到屏幕上。為了不阻塞主線程,我們可以考慮采取這樣的方案:在后臺線程執(zhí)行繁重的繪圖任務(wù),把所繪制的東西緩存起來;繪圖完畢后,再回到UI主線程,一次性把所繪制的東西渲染到屏幕上。(本質(zhì)就是后臺線程繪圖,UI主線程渲染)只使用View的onDraw方法是無法實現(xiàn)這種方案的,而SurfaceView可以實現(xiàn)這種方案。

先看看SurfaceView的工作原理圖:

首先,SurfaceView使用Canvas對象進(jìn)行繪圖;由圖可以看出,Canvas在后臺線程繪制的東西先緩存到Surface中。其次,讓Surface回到UI主線程渲染到屏幕上。因此,要有Surface對象存在,才能夠在屏幕上顯示圖案。

二、SurfaceView在代碼中各成員解釋

(一)Surface與SurfaceHolder對象

Surface是SurfaceView里面的一個成員變量,它的創(chuàng)建和銷毀過程都是自動的。Surface的主要作用是緩存Canvas繪制的東西,并渲染到屏幕上。SurfaceHolder對象通過類SurfaceView的getHolder()函數(shù)獲得。

(二)后臺繪圖線程的開啟與銷毀

在Surface被創(chuàng)建的時候,開啟繪圖線程。在Surface被銷毀的時候,銷毀繪圖線程。因為沒有Surface,繪制再多的東西也無法渲染到屏幕上。既然要在創(chuàng)建Surface時開啟繪圖線程,在銷毀Surface時銷毀繪圖線程。那就需要監(jiān)聽Surface的生命周期,使用SurfaceHolder對象的addCallback()來添加Surface的生命周期監(jiān)聽器——SurfaceHolder.Callback

(三)Callback的成員函數(shù)

1.Surface的大小發(fā)生改變時調(diào)用surfaceChanged

2.Surface創(chuàng)建時調(diào)用,一般在這里開啟繪圖線程surfaceCreated

3.Surface銷毀時調(diào)用,一般在這里銷毀繪圖線程surfaceDestroyed

三、實例的具體實現(xiàn)步驟及代碼實現(xiàn)

(一)1SurfaceView使用步驟

1.新建一個繼承SurfaceView的類——GameView

2.得到SurfaceHolder對象,并監(jiān)聽Surface的生命周期

3.開啟繪圖線程、銷毀繪圖線程

4.在run方法中嘗試進(jìn)行繪圖

5.動態(tài)刷新屏幕

(二)具體代碼實現(xiàn):

1.MainActivity,主要Activity

class MainActivity extends Activity {

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(new MyView(this));

2.MySurfaceView

class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback{

SurfaceHolder holder;

public MyView(Context context) {

super(context);

holder = this.getHolder();//獲取holder

holder.addCallback(this);

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { }

@Override

public void surfaceCreated(SurfaceHolder holder) {

new Thread(new MyThread()).start();

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) { }

}

3.MyThread

class MyThread implements Runnable{

@Override

public void run() {

Canvas canvas = holder.lockCanvas(null);//

獲取畫布

Paint mPaint = new Paint();

mPaint.setColor(Color.BLUE);

canvas.drawRect(new RectF(40,60,80,80), mPaint);

holder.unlockCanvasAndPost(canvas);//解鎖畫布,提交畫好的圖像

}

}

本文對Android系統(tǒng)的游戲開中的SurfaceView類進(jìn)行了分析,對于SurfaceView在游戲開發(fā)中與View的區(qū)別做了簡單說明,最后給出一個簡單的例子作為學(xué)習(xí)的樣例,為能夠給游戲開發(fā)人員提供一點(diǎn)啟示。

參考文獻(xiàn):

[1](美)Shane Conder(美)Lauren Darcey .Android移動應(yīng)用開發(fā)入門到精通人民郵電出版社,2010.

[2]胡必波.基于Android系統(tǒng)的手機(jī)游戲設(shè)計與實現(xiàn)[D]. 華南理工大學(xué).

(責(zé)編 張景賢)

主站蜘蛛池模板: 欧美亚洲一区二区三区导航| 国产精品亚洲欧美日韩久久| 91视频首页| 亚洲永久免费网站| 精品91视频| 最新日本中文字幕| 视频二区国产精品职场同事| 国产成人啪视频一区二区三区 | 综1合AV在线播放| 国产一区二区三区在线观看免费| 欧美日韩成人| 中字无码精油按摩中出视频| 91丨九色丨首页在线播放| av在线人妻熟妇| 国产不卡在线看| 91在线日韩在线播放| 亚洲国产日韩欧美在线| 无码人中文字幕| 亚洲国产精品一区二区第一页免 | 2018日日摸夜夜添狠狠躁| 色综合婷婷| 毛片三级在线观看| 久久国产精品电影| 亚洲第一区精品日韩在线播放| 亚洲区欧美区| 国产成人1024精品| 中日无码在线观看| 亚洲不卡网| 丁香五月亚洲综合在线| 国产精品刺激对白在线| 亚洲国内精品自在自线官| 欧美三级日韩三级| 欧美成人手机在线观看网址| 国产色婷婷| 成年人午夜免费视频| 久久精品无码专区免费| 亚洲黄网在线| 亚洲国产清纯| 亚洲欧洲国产成人综合不卡| 久久77777| 一区二区偷拍美女撒尿视频| 一级爱做片免费观看久久| 一本一道波多野结衣一区二区| 午夜视频免费试看| 性做久久久久久久免费看| 毛片一级在线| 亚洲av无码片一区二区三区| 国产日产欧美精品| 久久综合AV免费观看| 国产本道久久一区二区三区| 亚洲一级毛片免费观看| 国产成人综合亚洲网址| 玖玖免费视频在线观看| 日本黄色不卡视频| 亚洲精品人成网线在线| 伊人久久久久久久久久| 69国产精品视频免费| 欧美在线视频a| 成人噜噜噜视频在线观看| 日本不卡在线播放| 手机在线国产精品| 免费看久久精品99| 国产黄在线免费观看| 欧美国产菊爆免费观看| 精品自拍视频在线观看| 自拍亚洲欧美精品| 久久久久夜色精品波多野结衣| 最新午夜男女福利片视频| 亚洲欧美日韩中文字幕在线一区| 少妇高潮惨叫久久久久久| 亚洲永久精品ww47国产| 成人免费一区二区三区| 好吊日免费视频| 午夜a级毛片| 国产精品永久免费嫩草研究院| 精品亚洲麻豆1区2区3区| 亚洲天堂网站在线| 国产理论最新国产精品视频| 香蕉久久国产超碰青草| 国产二级毛片| 日韩在线永久免费播放| 国产欧美日韩视频怡春院|