溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進行SurfaceView的示例分析

發(fā)布時間:2021-12-15 17:46:44 來源:億速云 閱讀:179 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹如何進行SurfaceView的示例分析,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

SurfaceView簡介

SurfaceView本身是一個View,符合一切View的特性,需要通過Canvas畫布繪制??梢栽诹硪粋€線程中更新界面,不會阻礙界面的交互。

SurfaceView 繪圖效率較高,用于界面更新頻繁的程序,如相機預覽。一些游戲的動畫效果也一般用SurfaceView來實現(xiàn)。

實現(xiàn)效果

我們這次想實現(xiàn)的效果是說上去的話能夠直接顯示在彈出的語音實別框里。

代碼演示

語音實別的這塊實現(xiàn)主要還是看《Android集成科大訊飛SDK實現(xiàn)語音識別》文章里的介紹吧,我們這次的代碼主要是看SurfaceView


(1)創(chuàng)建SurfaceView

創(chuàng)建自定義的SurfaceView繼承自SurfaceView,并實現(xiàn)兩個接口:SurfaceHolder.Callback代碼如下:

如何進行SurfaceView的示例分析

通過實現(xiàn)這個接口,就需要在自定義的SurfaceView中實現(xiàn)接口的方法,對于SurfaceHolder.Callback方法,需要實現(xiàn)如下方法,其實就是SurfaceView的生命周期:

如何進行SurfaceView的示例分析

上面的DrawText是我們的核心方法,一會兒再介紹


(2)初始化SurfaceView

在自定義的SurfaceView的構(gòu)造方法中,需要對SurfaceView進行初始化,包括SurfaceHolder的初始化、如支持透明度,防止被其它控件遮擋。代碼如下:

如何進行SurfaceView的示例分析


(3)使用SurfaceView

通過SurfaceHolder對象的lockCanvans()方法,我們可以獲取當前的Canvas繪圖對象。接下來的操作就和自定義View中的繪圖操作一樣了。需要注意的是這里獲取到的Canvas對象還是繼續(xù)上次的Canvas對象,而不是一個新的對象。因此,之前的繪圖操作都會被保留,如果需要擦除,則可以在繪制前,通過定義一個Paint,然后drawPaint()方法來進行清屏操作。

核心方法DrawText

如何進行SurfaceView的示例分析

上面這段可以看到,我們先通過SurfaceHolder對象的lockCanvans()獲取到canvas,然后利用了一個Paint進行了一次清屏操作,防止上次字符重疊,接下來就是用的TextPaint進行文字的繪制。

到這里我們的SurfaceView就已經(jīng)定義好了。


調(diào)用SurfaceView

我們新建一個IattextActivity

如何進行SurfaceView的示例分析

然后對應(yīng)的布局文件里面加入我們的TextSurfaceview和一個ImageView

如何進行SurfaceView的示例分析

效果如下:

如何進行SurfaceView的示例分析


調(diào)用SurfaceView

如何進行SurfaceView的示例分析


整個Activity的代碼

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

如何進行SurfaceView的示例分析

關(guān)于如何進行SurfaceView的示例分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI