SurfaceView
SurfaceView中采用了雙緩沖機制灶体,保證了UI界面的流暢性褂痰,同時 SurfaceView 不在主線程中繪制汗销,而是另開辟一個線程去繪制馅扣,所以它不妨礙UI線程锰镀;
SurfaceView 繼承于View娘侍,他和View主要有以下三點區(qū)別:
(1)View底層沒有雙緩沖機制,SurfaceView有泳炉;
(2)view主要適用于主動更新憾筏,而SurfaceView適用與被動的更新,如頻繁的刷新
(3)view會在主線程中去更新UI花鹅,而SurfaceView則在子線程中刷新氧腰;
- SurfaceView的內容不在應用窗口上,所以不能使用變換(平移、縮放古拴、旋轉等)箩帚。也難以放在ListView或者ScrollView中,不能使用UI控件的一些特性比如View.setAlpha()
View:顯示視圖黄痪,內置畫布紧帕,提供圖形繪制函數、觸屏事件桅打、按鍵事件函數等是嗜;必須在UI主線程內更新畫面,速度較慢
- SurfaceView:基于view視圖進行拓展的視圖類挺尾,更適合2D游戲的開發(fā)
TextureView
- 與SurfaceView相比鹅搪,TextureView并沒有創(chuàng)建一個單獨的Surface用來繪制,這使得它可以像一般的View一樣執(zhí)行一些變換操作遭铺,設置透明度等丽柿。另外,Textureview必須在硬件加速開啟的窗口中魂挂。
-
在android 7.0上系統(tǒng)surfaceview的性能比TextureView更有優(yōu)勢甫题,支持對象的內容位置和包含的應用內容同步更新,平移锰蓬、縮放不會產生黑邊幔睬。 在7.0以下系統(tǒng)如果使用場景有動畫效果,可以選擇性使用TextureView
image.png