我有一個Qt 5.6.0應用程序在Android上使用帶有透明背景的QQuickView,它繪製了一些qml和一個純粹的android SurfaceView,它應該在後臺顯示視頻。Android:使用ZOrderMediaOverlay在SurfaceView中繪製qml
在啓動時,一切都很好。我的視頻在後臺播放,我的qml組件顯示在前臺。
我的問題是,當我的活動暫停,然後恢復,每次從我qml的頂部顯示視頻。 經過研究,我認爲這是因爲Qt創建的用於顯示qml的SurfaceView和我創建的用於顯示視頻的SurfaceView位於相同的「z區域」。所以渲染順序是未定義的。
我想通過將ZOrderMediaOverlay設置爲true來將Qt SurfaceView移動到ZOrderMediaOverlay區域,但我必須在創建SurfaceView時將其設置爲true。
當我創建我的QQuickView時,有沒有辦法直接從C++設置我的z順序? 還是有另一種方式?
我有一個從QtActivity繼承的自定義活動,但SurfaceView沒有在onCreate函數中創建。 當我爲視頻創建SurfaceView時,我可以訪問Qt SurfaceView,但已經創建了Qt的SurfaceView,並且設置了ZOrderMediaOverlay沒有效果。
非常感謝您的幫助:)
編輯:關於源代碼,只需將QQuickView的標誌的Qt :: WindowStayOnTopHint真應該創建表面ZOrderMediaOverlay設置爲true,但它似乎沒有上班。 視頻表面在恢復後在qml表面上方繪製,直到視頻表面被破壞並重新創建。