TextureView硬件加速lockCanvas

最近在做Android視頻通話部分的需求,有一個需求是在視屏界面上顯示紅色的方框,

經過一段時間的糾結我發現Android4.0以上有一個控件TextureView,做視頻界面的話剛好合適,


它既可以想SurfaceView那樣渲染視頻,又可以想View一樣對它進行大小,位置,透明度處理,

就和普通的View一樣。TextureView必須在硬件加速的窗口中。


看到這裏,我自然是毫不猶豫的選擇用TextureView,我的感受TextureView確實好用,

渲染視頻的效果我覺得比SurfaceView還好,還能像View一樣進行動畫處理。

對於TextureView的介紹,大家可以看這篇文章TextureView


但是當我想在TextureView上面繪製一些自己的東西的時候發現出問題了!

首先我想跟SurfaceView一樣,調用它的lockCanvas來繪製自己的東西,

結果發現一旦開始播放視頻的時候lockCavans獲取的Canvas就爲null


上網搜索了下,原來問題出在硬件加速上,在硬件加速的情況下,TextureView是用GPU渲染的,

軟件上的Canvas是不能進行處理的,而TextureView必須在硬件加速的窗口中,所以一旦播放視頻的時候是不能獲取到Canvas的。


最後我決定選擇用SurfaceView來做這部分需求,或者想個更好的辦法。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章