我如何使视频的框架布局有圆角与Agora?



目前,我尝试了这个,但没有工作。

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也有类似的问题。这有关系吗?

这是相关的,一些视频(SurfaceView)和网页内容(WebView)是在原生端"下"框架,而不考虑其布局。这些View实际上是在"切割一个洞"。在布局的地方,他们的定位和一些智能算法绘制在这些矩形上,无论其他框架级的View或框架相关的装饰,本地端是覆盖这个

你可以尝试使用TextureView如果可能的话,你的播放器,它就像SurfaceView的v2,它尊重(部分)框架绘制的参数和XML属性,这是为shure,所以也许也drawables/Views覆盖它

使用CardView代替framayout并设置角半径,然后从agora添加remoteSurfaceView到它。

<androidx.cardview.widget.CardView
android:id="@+id/small_video_container"
android:layout_width="134dp"
android:layout_height="134dp"
app:cardCornerRadius="70dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_gravity="center"/>

最新更新