我是android的新手。我默认有2个表面视图(localView和remoteView)我将localView放在remoteView上使用" localView.setZOrderMediaOverlay(true);"。现在一切正常,但我有按钮(交换)交换两个视图的位置,使remoteView应该位于localView之上。我已经制作了#34; localView.setZOrderMediaOverlay(false);"和" remoteView.setZOrderMediaOverlay(true)"在onClickListner但它不起作用。
remoteView未出现在localView之上。我可以看到它在localView后面。
这是我的代码:
<SurfaceView
android:id="@+id/remote_surface"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="@drawable/layout_border"
/>
<SurfaceView
android:id="@+id/local_surface"
android:layout_height="180px"
android:layout_width="180px"
android:background="@drawable/layout_border"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"/>
提前致谢。
答案 0 :(得分:0)
正如@Opiatefuchs在评论中指出的那样,the docs表示在设置Surface之后无法更改SurfaceView曲面的Z顺序。
你有几个选择。一种可能性是改变曲面的绘制方式。例如,如果两者都是使用OpenGL ES绘制的,那么您只需交换与渲染器关联的EGL上下文。 (或者,就此而言,在单个SurfaceView上绘制所有内容,并反转呈现内容的顺序或深度。)
对于其他数据来源,例如MediaPlayer,它可能不是那么简单或无缝。使用TextureView替换SurfaceView可能是值得的,因为可以像任何其他视图一样通过布局进行排序。由于额外的副本,这可能比SurfaceView效率低。