gpt4 book ai didi

android - SurfaceView 位于 SurfaceView 之上

转载 作者:行者123 更新时间:2023-12-02 16:10:10 24 4
gpt4 key购买 nike

我正在使用两个 MjpegView(扩展 SurfaceView 的自定义 View )构建一个应用程序。问题是有时我看不到第二个摄像机 View ,因为它位于第一个摄像机 View 后面。流媒体工作没有任何问题,我尝试更改布局内相机 View 的位置,但没有成功,还尝试将其置于前面(第二个相机)。

这是布局本身的代码,

谢谢

  <?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"
android:clickable="true"
android:orientation="vertical" >

<RelativeLayout
android:id="@+id/visul_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/camera_border"
android:padding="2dp" >

<TextView
android:id="@+id/no_visu_stream"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/measurment_no_stream"
android:textColor="@android:color/white"
android:textSize="25sp" />

<com.example.test.views.MjpegView
android:id="@+id/sh_surface"
android:layout_alignParentBottom="true"
android:layout_width="150dp"
android:layout_height="150dp"
android:visibility="gone" />

<com.example.test.views.MjpegView
android:id="@+id/visul_surface"
android:layout_width="match_parent"
android:layout_margin="2dp"
android:layout_height="500dp"
android:visibility="gone" />

<ImageView
android:id="@+id/cible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/cible"
android:visibility="gone" />


<TextView
android:id="@+id/no_sh_stream"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_centerInParent="true"
android:text="@string/measurment_no_stream"
android:textColor="@android:color/white"
android:textSize="14sp" />



</RelativeLayout>

<RelativeLayout
android:id="@+id/eye_left_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:padding="10dp" >

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/motor_arrow_selector_left" />
</RelativeLayout>

<RelativeLayout
android:id="@+id/eye_right_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="15dp"
android:padding="10dp" >

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/motor_arrow_selector_right" />
</RelativeLayout>

<RelativeLayout
android:id="@+id/eye_up_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:padding="10dp" >

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/motor_arrow_selector_up" />
</RelativeLayout>

<RelativeLayout
android:id="@+id/eye_down_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="15dp"
android:padding="10dp" >

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/motor_arrow_selector_down" />
</RelativeLayout>


<ImageView
android:id="@+id/disable_camera_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/disable_camera_layout"
android:clickable="true"
android:visibility="gone" />

</RelativeLayout>

最佳答案

(我不确定这是一个简单的布局问题还是重叠 SurfaceView 表面的问题;我将其视为第二个问题。)

SurfaceView 表面存在于单独的层上,独立于用于渲染 View 层次结构的图形层。 SurfaceView 的“ View ”部分只是一个透明的孔,可让您透过 View 层看到 Surface。

每个表面层都有一个 Z 顺序。如果两个 Surface 尝试占据相同的空间,则其中一个会获胜,并且获胜者并不完全确定。您可以通过显式设置其中一个曲面的 Z 顺序来解决此问题。 setZOrderMediaOverlay()调用会将图层定位在默认表面位置之上,但在 View 图层之下。 setZOrderOnTop()会将表面放置在 View UI 上方。必须在创建表面之前进行调用(例如在 onCreate() 中)。

有关示例,请参阅 Grafika 中的“multi-surface test ” Activity 。

关于android - SurfaceView 位于 SurfaceView 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28873710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com