Android中TextureView與SurfaceView用法區(qū)別總結(jié)
SurfaceView和TextureView均繼承于android.view.View
與其它View不同的是,兩者都能在獨立的線程中繪制和渲染,在專用的GPU線程中大大提高渲染的性能。
一、SurfaceView專門提供了嵌入視圖層級的繪制界面,開發(fā)者可以控制該界面像Size等的形式,能保證界面在屏幕上的正確位置。
但也有局限:
由于是獨立的一層View,更像是獨立的一個Window,不能加上動畫、平移、縮放;
兩個SurfaceView不能相互覆蓋。
二、TextureView更像是一般的View,像TextView那樣能被縮放、平移,也能加上動畫。
TextureView只能在開啟了硬件加速的Window中使用,并且消費的內(nèi)存要比SurfaceView多,并伴隨著1-3幀的延遲。
三、TextureView和SurfaceView都是繼承自View類的,但是TextureView在Andriod4.0之后的API中才能使用。
SurfaceView可以通過SurfaceHolder.addCallback方法在子線程中更新UI,TextureView則可以通過TextureView.setSurfaceTextureListener在子線程中更新UI,個人認為能夠在子線程中更新UI是上述兩種View相比于View的最大優(yōu)勢。
但是,兩者更新畫面的方式也有些不同,由于SurfaceView的雙緩沖功能,可以是畫面更加流暢的運行,但是由于其holder的存在導(dǎo)致畫面更新會存在間隔(不太好表達,直接上圖)。并且,由于holder的存在,SurfaceView也不能進行像View一樣的setAlpha和setRotation方法,但是對于一些類似于坦克大戰(zhàn)等需要不斷告訴更新畫布的游戲來說,SurfaceView絕對是極好的選擇。但是比如視頻播放器或相機應(yīng)用的開發(fā),TextureView則更加適合。
相關(guān)文章
Android registerForActivityResult動態(tài)申請權(quán)限案例詳解
這篇文章主要介紹了Android registerForActivityResult動態(tài)申請權(quán)限案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-09-09Android手機號碼輸入框(滿11位自動跳到下個輸入框)實例代碼
這篇文章主要介紹了Android手機號碼輸入框(滿11位自動跳到下個輸入框)實例代碼,需要的朋友可以參考下2017-10-10ImageView的屬性android:scaleType的作用分析
本篇文章是對ImageView的屬性android:scaleType的作用進行了詳細的分析介紹,需要的朋友參考下2013-06-06