最近我在android学习了webrtc。
我想点击 SurfaceView A使其全屏,另一个 SurfaceView B变小,或者点击B.但我发现很难改变两个不同的z顺序运行时的表面视图。
这是我的布局
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/app_bar_main">
<org.webrtc.PercentFrameLayout
android:id="@+id/remote_video_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.webrtc.SurfaceViewRenderer
android:id="@+id/remote_video_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</org.webrtc.PercentFrameLayout>
<org.webrtc.PercentFrameLayout
android:id="@+id/local_video_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.webrtc.SurfaceViewRenderer
android:id="@+id/local_video_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:keepScreenOn="true" />
</org.webrtc.PercentFrameLayout>
PercentFrameLayout是一个ViewGroup子类,用于衡量屏幕百分比。
我试图在运行时使用setZOrderMediaOverlay但它失败了。我发现SDK说
请注意,必须在表面视图包含之前设置 窗口附加到窗口管理器。
那么这是否意味着我无法在运行时更改 SurfaceView z-order?
或者有没有办法破解它?
抱歉我的英语不好。
编辑1
SurfaceViewRender 和 PercentFrameLayout 都来自库, SurfaceViewRender 是 SurfaceView 子类。
答案 0 :(得分:2)
最后,我多次尝试并自己解决。
首先,我将if ($valuepost > 4) {
throw new \Exception('Must not be over 4.');
}
A和B更改为SurfaceViewRender
,然后从父布局中删除A和B,View.GONE
为假,B为真或A为真,B为false。左边的步骤恰好相反。
如下所示。
setZOrderMediaOverlay