這篇文章給大家介紹如何進(jìn)行SurfaceView的示例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供聯(lián)通服務(wù)器托管,高防服務(wù)器,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。
SurfaceView簡介
SurfaceView本身是一個(gè)View,符合一切View的特性,需要通過Canvas畫布繪制。可以在另一個(gè)線程中更新界面,不會(huì)阻礙界面的交互。
SurfaceView 繪圖效率較高,用于界面更新頻繁的程序,如相機(jī)預(yù)覽。一些游戲的動(dòng)畫效果也一般用SurfaceView來實(shí)現(xiàn)。
實(shí)現(xiàn)效果
我們這次想實(shí)現(xiàn)的效果是說上去的話能夠直接顯示在彈出的語音實(shí)別框里。
代碼演示
語音實(shí)別的這塊實(shí)現(xiàn)主要還是看《Android集成科大訊飛SDK實(shí)現(xiàn)語音識(shí)別》文章里的介紹吧,我們這次的代碼主要是看SurfaceView
(1)創(chuàng)建SurfaceView
創(chuàng)建自定義的SurfaceView繼承自SurfaceView,并實(shí)現(xiàn)兩個(gè)接口:SurfaceHolder.Callback代碼如下:
通過實(shí)現(xiàn)這個(gè)接口,就需要在自定義的SurfaceView中實(shí)現(xiàn)接口的方法,對(duì)于SurfaceHolder.Callback方法,需要實(shí)現(xiàn)如下方法,其實(shí)就是SurfaceView的生命周期:
上面的DrawText是我們的核心方法,一會(huì)兒再介紹
(2)初始化SurfaceView
在自定義的SurfaceView的構(gòu)造方法中,需要對(duì)SurfaceView進(jìn)行初始化,包括SurfaceHolder的初始化、如支持透明度,防止被其它控件遮擋。代碼如下:
(3)使用SurfaceView
通過SurfaceHolder對(duì)象的lockCanvans()方法,我們可以獲取當(dāng)前的Canvas繪圖對(duì)象。接下來的操作就和自定義View中的繪圖操作一樣了。需要注意的是這里獲取到的Canvas對(duì)象還是繼續(xù)上次的Canvas對(duì)象,而不是一個(gè)新的對(duì)象。因此,之前的繪圖操作都會(huì)被保留,如果需要擦除,則可以在繪制前,通過定義一個(gè)Paint,然后drawPaint()方法來進(jìn)行清屏操作。
核心方法DrawText
上面這段可以看到,我們先通過SurfaceHolder對(duì)象的lockCanvans()獲取到canvas,然后利用了一個(gè)Paint進(jìn)行了一次清屏操作,防止上次字符重疊,接下來就是用的TextPaint進(jìn)行文字的繪制。
到這里我們的SurfaceView就已經(jīng)定義好了。
調(diào)用SurfaceView
我們新建一個(gè)IattextActivity
然后對(duì)應(yīng)的布局文件里面加入我們的TextSurfaceview和一個(gè)ImageView
效果如下:
調(diào)用SurfaceView
整個(gè)Activity的代碼
關(guān)于如何進(jìn)行SurfaceView的示例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
文章名稱:如何進(jìn)行SurfaceView的示例分析
文章URL:http://jinyejixie.com/article46/iepoeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站收錄、Google、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)