android 如何使用Agora使FrameLayout for Video具有圆角?

bvjveswy  于 2023-06-27  发布在  Android
关注(0)|答案(2)|浏览(161)

当时,我试着用这个,但没有工作。

  1. val surfaceView = RtcEngine.CreateRendererView(baseContext)
  2. surfaceView.apply {
  3. clipToOutline = true
  4. clipBounds = Rect(15,15, 15, 15)
  5. outlineProvider = CircularOutlineProvider(15)
  6. setZOrderMediaOverlay(true)
  7. }
  8. binding.localVideoViewContainer.apply {
  9. addView(surfaceView)
  10. clipToOutline = true
  11. clipBounds = Rect(15,15, 15, 15)
  12. outlineProvider = CircularOutlineProvider(15)
  13. }
  1. class CircularOutlineProvider(val c: Int):ViewOutlineProvider() {
  2. override fun getOutline(view:View, outline:Outline) {
  3. outline.setRoundRect(c, c, view.width - c, view.height - c, view.width/2f)
  4. }
  5. }
  1. <FrameLayout
  2. android:id="@+id/local_video_view_container"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:clipChildren="true"
  6. android:clipToOutline="true"
  7. tools:background="@color/gray_7f"/>

我甚至试过用这样的可绘制文件设置背景,但没有工作。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  3. <solid android:color="#CCCCCC"/>
  4. <stroke android:width="2dp"
  5. android:color="#999999"/>
  6. <padding android:left="2dp"
  7. android:top="2dp"
  8. android:right="2dp"
  9. android:bottom="2dp"/>
  10. <corners android:radius="8dp" />
  11. </shape>
  1. <FrameLayout
  2. android:width="match_parent"
  3. android:height="wrap_content"
  4. android:background="@drawable/rounded_shape"/>

另外,WebView也有类似的问题。这有关系吗

sigwle7e

sigwle7e1#

相关的是,一些视频(SurfaceView)和web内容(WebView)在本地端“在”框架下呈现,而不考虑其布局。这些View实际上是在布局中的它们所处的位置“切割一个洞”,并且一些智能算法正在这些矩形上绘制,无论其他框架级别的View或框架相关的装饰如何,native side都将覆盖此
如果可能的话,你可以尝试在你的播放器中使用TextureView,它就像SurfaceView的v2,它尊重(部分)框架绘制的参数和XML属性,这是针对舒尔的,所以也许还有drawables/View s覆盖它

rdrgkggo

rdrgkggo2#

使用CardView而不是FrameLayout并设置角半径,然后从agora添加remoteSurfaceView。

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

相关问题