我有一个SurfaceView作为相机的实时预览,一个GLSurfaceView可以绘制一些OpenGL对象,最后一个SurfaceView可以显示一些GUI元素。我试图将GLSurfaceView放在相机的SurfaceView上方,但同时我希望GUI的SurfaceView高于GLSurfaceView。我尝试了setZOrderOnTop函数,但是它不能用于2个以上的SurfaceView。有什么方法可以管理多个View的Z顺序?

最佳答案

有什么方法可以管理多个视图的Z顺序?


步骤#1:将它们放入支持Z轴排序的容器中,例如FrameLayoutRelativeLayout

步骤2:较晚的孩子在Z轴上要比较早的孩子高,因此请对这些孩子进行适当排序。

例如:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/big"
        android:textSize="120dip"
        android:textStyle="bold"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="@string/small"/>

</RelativeLayout>


第二个按钮(带有android:text="@string/small")将浮在第一个按钮的顶部。

现在,SurfaceViews是不寻常的野兽,如果您能使它们按您想要的方式工作,我会感到惊讶。如果您的android:minSdkVersion为14或更高,请考虑切换到TextureView

关于android - 如何设置多个SurfaceView的Z顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18110681/

10-09 01:31