gpt4 book ai didi

android - 如何在 android 中更改 surfaceview 的 z 顺序运行时

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:27 25 4
gpt4 key购买 nike

最近在研究android中的webrtc。

我想点击 SurfaceView A 使其全屏,而另一个 SurfaceView B 变小,或者点击 B。但我发现很难改变两个不同的 z 顺序运行时的表面 View 。

这是我的布局

<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 说

注意这个必须在surface view包含之前设置 窗口附加到窗口管理器。


那么这是否意味着我无法在运行时更改 SurfaceView z 顺序?或者有什么办法破解它?

抱歉我的英语不好。



编辑 1
SurfaceViewRenderPercentFrameLayout 都来自库,SurfaceViewRenderSurfaceView 的子类。

最佳答案

最后尝试了很多次,自己解决了。

首先,我将 SurfaceViewRender A 和 B 更改为 View.GONE,然后从父布局中移除 A 和 B,setZOrderMediaOverlay A false 和B 真或 A 真 B 假。左边的步骤正好相反。

如下所示。

    mLocalRender.setVisibility(View.GONE);
mRemoteRender.setVisibility(View.GONE);
mLocalRenderLayout.removeView(mLocalRender);
mRemoteRenderLayout.removeView(mRemoteRender);
mLocalRender.setZOrderMediaOverlay(mLocalPreview);
mRemoteRender.setZOrderMediaOverlay(!mLocalPreview);
mLocalRenderLayout.addView(mLocalRender, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mRemoteRenderLayout.addView(mRemoteRender, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mLocalRender.setVisibility(View.VISIBLE);
mRemoteRender.setVisibility(View.VISIBLE);

关于android - 如何在 android 中更改 surfaceview 的 z 顺序运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385522/

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