我有一个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表面上方绘制,直到视频表面被破坏并重新创建。