如何在android

时间:2016-05-23 07:55:17

标签: android webrtc surfaceview z-order apprtcdemo

最近我在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 子类。

1 个答案:

答案 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