当时,我试着用这个,但没有工作。
val surfaceView = RtcEngine.CreateRendererView(baseContext)
surfaceView.apply {
clipToOutline = true
clipBounds = Rect(15,15, 15, 15)
outlineProvider = CircularOutlineProvider(15)
setZOrderMediaOverlay(true)
}
binding.localVideoViewContainer.apply {
addView(surfaceView)
clipToOutline = true
clipBounds = Rect(15,15, 15, 15)
outlineProvider = CircularOutlineProvider(15)
}
class CircularOutlineProvider(val c: Int):ViewOutlineProvider() {
override fun getOutline(view:View, outline:Outline) {
outline.setRoundRect(c, c, view.width - c, view.height - c, view.width/2f)
}
}
<FrameLayout
android:id="@+id/local_video_view_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="true"
android:clipToOutline="true"
tools:background="@color/gray_7f"/>
我甚至试过用这样的可绘制文件设置背景,但没有工作。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#CCCCCC"/>
<stroke android:width="2dp"
android:color="#999999"/>
<padding android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/>
<corners android:radius="8dp" />
</shape>
<FrameLayout
android:width="match_parent"
android:height="wrap_content"
android:background="@drawable/rounded_shape"/>
另外,WebView也有类似的问题。这有关系吗
2条答案
按热度按时间sigwle7e1#
相关的是,一些视频(
SurfaceView
)和web内容(WebView
)在本地端“在”框架下呈现,而不考虑其布局。这些View
实际上是在布局中的它们所处的位置“切割一个洞”,并且一些智能算法正在这些矩形上绘制,无论其他框架级别的View
或框架相关的装饰如何,native side都将覆盖此如果可能的话,你可以尝试在你的播放器中使用
TextureView
,它就像SurfaceView
的v2,它尊重(部分)框架绘制的参数和XML属性,这是针对舒尔的,所以也许还有drawables/View
s覆盖它rdrgkggo2#
使用CardView而不是FrameLayout并设置角半径,然后从agora添加remoteSurfaceView。