Android Canvas前期準(zhǔn)備工作之SurfaceView

我們平時自定義控件很多時候都是繼承View來進(jìn)行UI的繪制站蝠,今天這里說的SurfaceView也是繼承View的控件菱魔,我們的游戲就是需要在SurfaceView來實現(xiàn)减牺,我們先來看看<a >官方文檔</a>吧

SurfaceView是一個提供嵌入視圖層次結(jié)構(gòu)中的專用繪圖面,我們可以控制這個繪圖面的大小和尺寸肥隆,SurfaceView可以控制這個繪圖面在屏幕的正確位置稚失。

繪圖面(其實就是Surface)是縱深排序的惨险,繪圖面總是它自己窗口的后面瓶您,SurfaceView提供了一個可見區(qū)域顯示繪圖面矾屯,繪圖面的內(nèi)容受層次結(jié)構(gòu)影響,繪圖面內(nèi)容的兄弟總是在最頂端件蚕,就是說最后繪制的內(nèi)容可能會覆蓋前面的內(nèi)容排作。這可以用來放置覆蓋如表面上的按鈕,如果繪圖面上面 有透明控件哈雏,那么它的每次變化都會引起框架重新計算它和頂層控件的透明效果衫生,這會影響性能。

訪問底層的表面通過SurfaceHolder接口提供盹愚,這可以通過調(diào)用getholder()獲取接口站故。

繪圖面將被創(chuàng)建為你而SurfaceView的窗口是可見的毅舆;你應(yīng)該實現(xiàn)surfacecreated(SurfaceHolder)和surfacedestroyed(SurfaceHolder)發(fā)現(xiàn)當(dāng)繪圖面被創(chuàng)建和銷毀窗口的顯示和隱藏憋活。

SurfaceView的一個目的是提供一個表面,其中一個輔助線程可以渲染到屏幕上.悦即。如果你要使用這種方式辜梳,你需要知道一些線程的語義:

  • 所有的SurfaceView和SurfaceHolder.Callback的方法都應(yīng)該在UI線程里調(diào)用〔柘回調(diào)方法將從線程運(yùn)行的窗口叫SurfaceView(通常是應(yīng)用程序的主線程)宗挥。因此种蝶,它們需要正確地與繪制線程所接觸的任何狀態(tài)同步.螃征。

  • 由于SurfaceView可能被銷毀透敌,它只在SurfaceHolder.Callback.surfaceCreated()和surfaceDestroyed()之間有效,所以要確保渲染線程訪問的是合法有效的surface淌山。

好吧顾瞻,上面大概是我從來官方文檔看的大概的意思,因為我知道SurfaceView已經(jīng)有很多應(yīng)用都用到了退渗,包括自定義視頻蕴纳,拍照等古毛,所以我相信那些前輩已經(jīng)做得比我好很多,我就直接介紹一下接下來我需要重寫的方法:

<b>1.surfaceCreated()第一次創(chuàng)建繪圖層進(jìn)入的方法稻薇,可以用來做一些資源初始化的事情塞椎。</b>

Paste_Image.png

<b>2.surfaceChanged()當(dāng)surface發(fā)生改變的時候案狠,比如大小的時候觸發(fā),第一次創(chuàng)建的時候也會觸發(fā)骂铁。</b>

Paste_Image.png

<b>3.surfaceDestroyed()銷毀時候觸發(fā)从铲,比如退出當(dāng)前繪圖,退出游戲阱扬,停止線程和資源的釋放。</b>

Paste_Image.png

-----------------我是分割線-----------
再說一下我們需要用的一個類<a >SurfaceHolder</a>
這個東西可以看作是我們的手,一個控制器窃蹋,圖紙準(zhǔn)備好了警没,我們就需要去上面繪制東西,就是通過SurfaceHolder來操控surface杀迹。

<b>1.給SurfaceView當(dāng)前的持有者一個回調(diào)對象树酪。</b>
abstract void addCallback(SurfaceHolder.Callback callback);
<b>2.鎖定畫布,就是在可以畫布上畫東西了垂谢。</b>
abstract Canvas lockCanvas();
<b>3.解鎖畫布疮茄,繪制東西完成后,提交給surface進(jìn)行展現(xiàn)</b>
abstract void unlockCanvasAndPost(Canvas canvas);

總結(jié)
基本上就是這些東西了焚虱,也許你現(xiàn)在就還不太明白懂版,不用擔(dān)心躯畴,因為下一節(jié)開始就正式進(jìn)行游戲繪制了薇芝,也開始正式學(xué)習(xí)canvas的用法以及慢慢去了解它的強(qiáng)大之處,如果你喜歡就點擊喜歡讓我知道你也喜歡Canvas嚷缭。

<b>學(xué)習(xí)就是生活的一種態(tài)度。</b>

<a href="http://www.reibang.com/p/c1480142f536">上一篇</a> <a href="http://www.reibang.com/p/a87a9ed6a8b2">下一篇</a>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末路幸,一起剝皮案震驚了整個濱河市简肴,隨后出現(xiàn)的幾起案子百侧,更是在濱河造成了極大的恐慌,老刑警劉巖辫狼,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膨处,死亡現(xiàn)場離奇詭異频蛔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瀑粥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門狞换,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舟肉,“玉大人,你說我怎么就攤上這事黄琼≌鳎” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵撤师,是天一觀的道長拧揽。 經(jīng)常有香客問我腺占,道長痒谴,這世上最難降的妖魔是什么闰歪? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任库倘,我火速辦了婚禮,結(jié)果婚禮上杆勇,老公的妹妹穿的比我還像新娘饱亿。我一直安慰自己,他們只是感情好钻注,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布配猫。 她就那樣靜靜地躺著,像睡著了一般捆交。 火紅的嫁衣襯著肌膚如雪腐巢。 梳的紋絲不亂的頭發(fā)上冯丙,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天胃惜,我揣著相機(jī)與錄音,去河邊找鬼蛹疯。 笑死捺弦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幽崩。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼寞钥,長吁一口氣:“原來是場噩夢啊……” “哼慌申!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起理郑,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蹄溉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后您炉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柒爵,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年赚爵,在試婚紗的時候發(fā)現(xiàn)自己被綠了棉胀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡唁奢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窝剖,到底是詐尸還是另有隱情麻掸,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布枯芬,位于F島的核電站论笔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏千所。R本人自食惡果不足惜狂魔,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淫痰。 院中可真熱鬧最楷,春花似錦、人聲如沸待错。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽火俄。三九已至犯建,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓜客,已是汗流浹背适瓦。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工竿开, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玻熙。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓否彩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嗦随。 傳聞我的和親對象是個殘疾皇子列荔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容