視頻學習之旅(一) SurfaceView控件--------------畫面重疊問題

有一個這樣的需求,下面有2個tab進行切換,第一個是錄像界面(暫定爲界面A),第二個是拍照界面(暫定爲界面B),我第一個想到的就是用SurfaceView控件來實現,在佈局文件裏面它的屬性很簡單的。然後就想着錄像界面就顯示錄像預覽畫面,拍照界面就顯示拍照預覽畫面,但是當我切換的時候問題就來了。第一次打開應用是進入界面A,當我切換到界面B時,發現界面A的預覽畫面還顯示在界面B上,這樣就遮擋了界面B的SurfaceView,這樣肯定是不行的,然後我就去查看了SurfaceView的開發文檔。


public void setZOrderMediaOverlay (boolean isMediaOverlay)

Control whether the surface view's surface is placed on top of another regular surface view in the window (but still behind the window itself). This is typically used to place overlays on top of an underlying media surface view.

Note that this must be set before the surface view's containing window is attached to the window manager. 

setZOrderMediaOverlay

大概意思就是不論這個SurfaceView是否在其他SurfaceView的上面,這個api的作用通常就是將其覆蓋在其他媒體上面
這個SurfaceView是否在其他SurfaceView的上面,這個api的作用通常就是將其覆蓋在其他媒體上面。然後我就在代碼中設置了這句代碼發現並沒有解決我的問題,這個時候我想到了surfaceView的生命週期,原來我在切換的時候它界面A的surfaceView並沒有銷燬,照理來說當我不再界面A的時候他就會隱藏,既然知道他沒有銷燬就好辦了,每次在推出界面A的時候設置當前界面的SurfaceView不可見,剛進入的時候就設置爲可見,這樣就不會出現重疊問題了,這也證明了當前界面onPause時,surfaceView是會銷燬的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章