91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

解決SurfaceView調用setZOrderOnTop(true)遮擋其他控件的問題

發布時間:2020-07-22 20:48:03 來源:網絡 閱讀:33471 作者:辰月之征 欄目:開發技術
  1. SurfaceView遮擋其他控件的項目背景:

    最近在做播放器項目,由于底層實現是用Surface和OpenGL切換渲染,所以在布局里面同時使用了GLSurfaceView和SurfaceView,同時播放控制按鈕是自定義的,也沒有使用Android自己提供的MediaCtroller控件。在這種背景下,問題出現了,如果有相關開發基礎的同學應該知道,當SurfaceView和GLSurfaceView同時在一個布局里面,如果想讓SurfaveView顯示圖片或者視頻必須要調用SurfaceView.setZOrderOnTop(true),也就是說必須把SurfaceView置于Activity顯示窗口的最頂層才能正常顯示,然后調用了SurfaceView.setZOrderOnTop(true)又導致了其他控件比如播放、快進等按鈕被遮擋。網上有很多解決方案,比如解決SurfaceView設置透明造成遮蓋其他組件的替代方案,對于視頻播放的頁面都不夠完美,因為它是直接在SurfaceView上面繪制相關的控件,試想一下如果在SurfaceView的某些區域繪制了一些按鈕,勢必會擋住一部分視頻畫面,這樣對于用戶來說是很難接受的。

  2. 從SurfaceView源碼中尋找解決方案:

    由于在網上找的解決方案都不能滿足要求,沒辦法有折回來查看了下SurfaceView的源碼,在查看源碼的時候看到這個方法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.


  Calling this overrides any previous call to {@link #setZOrderOnTop}.

  大概的意思就是說控制窗口中表面的視圖層是否放置在常規視圖層的頂部。


  最終,我在調用setZOrderOnTop(true)之后調用了setZOrderMediaOverlay(true),OK,遮擋問題完美解決!

  

向AI問一下細節

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

AI

张掖市| 囊谦县| 青川县| 东乌珠穆沁旗| 周口市| 九龙坡区| 吉林省| 夏津县| 武城县| 洪泽县| 南充市| 屯留县| 浏阳市| 和政县| 保定市| 福建省| 潼南县| 微博| 临江市| 新丰县| 临猗县| 米易县| 焉耆| 长岭县| 沙坪坝区| 武威市| 平舆县| 常宁市| 南漳县| 达拉特旗| 洛浦县| 益阳市| 和龙市| 洪雅县| 河池市| 茂名市| 隆化县| 德保县| 门头沟区| 新郑市| 金川县|