我有一个SurfaceView
作为相机的实时预览,一个GLSurfaceView
可以绘制一些OpenGL对象,最后一个SurfaceView
可以显示一些GUI元素。我试图将GLSurfaceView
放在相机的SurfaceView
上方,但同时我希望GUI的SurfaceView
高于GLSurfaceView
。我尝试了setZOrderOnTop
函数,但是它不能用于2个以上的SurfaceView
。有什么方法可以管理多个View
的Z顺序?
最佳答案
有什么方法可以管理多个视图的Z顺序?
步骤#1:将它们放入支持Z轴排序的容器中,例如FrameLayout
或RelativeLayout
。
步骤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/