当 canvas 表面视图位于另一个 canvas 之上时无法将其舍入
Can't round the canvas surfaceview when it is on top of another canvas
我创建了一个应用程序,其中将显示 2 个视频流,它们应该一个在另一个之上,一个应该在顶部有圆角边缘。我使用 CardView
来圆化 SurfaceView
的边缘,这有助于关闭较低的视频流。
打开下方视频流后,上方视频流的圆角消失,再次变成矩形,另一个视频流的 Canvas
在下方。当一个流在另一个流之上播放时,如何确保边缘不会再次变直?
我尝试以不同的顺序将 SurfaceView 放在 FrameLayout
中,为 SurfaceView
或 CardView
设置不同的背景,包括仅白色或透明背景,以及带有矩形的视图带有切边,当设置 cardCornerRadius
参数时 - SurfaceView
仍然超出 CardView
。 cardPreventCornerOverlap 参数也没有效果。
我也尝试过自定义 canvas,但我唯一实现的是在矩形周边周围用白色框四舍五入,我需要确保没有框.
超出底部 canvas 的边缘是圆角的:
所有边都在另一个 canvas 上且未圆角:
我以前做过类似的事情,据我所知,如果您将其中一个 SurfaceView 切换到 TextureView,它会起作用。
这是因为 SurfaceView 的工作方式与其他视图不同,它基本上是一个透明视图,可以让您看到另一个渲染层,而 TextureView 和 SurfaceView 的工作方式有点不同。
我创建了一个应用程序,其中将显示 2 个视频流,它们应该一个在另一个之上,一个应该在顶部有圆角边缘。我使用 CardView
来圆化 SurfaceView
的边缘,这有助于关闭较低的视频流。
打开下方视频流后,上方视频流的圆角消失,再次变成矩形,另一个视频流的 Canvas
在下方。当一个流在另一个流之上播放时,如何确保边缘不会再次变直?
我尝试以不同的顺序将 SurfaceView 放在 FrameLayout
中,为 SurfaceView
或 CardView
设置不同的背景,包括仅白色或透明背景,以及带有矩形的视图带有切边,当设置 cardCornerRadius
参数时 - SurfaceView
仍然超出 CardView
。 cardPreventCornerOverlap 参数也没有效果。
我也尝试过自定义 canvas,但我唯一实现的是在矩形周边周围用白色框四舍五入,我需要确保没有框.
超出底部 canvas 的边缘是圆角的:
所有边都在另一个 canvas 上且未圆角:
我以前做过类似的事情,据我所知,如果您将其中一个 SurfaceView 切换到 TextureView,它会起作用。 这是因为 SurfaceView 的工作方式与其他视图不同,它基本上是一个透明视图,可以让您看到另一个渲染层,而 TextureView 和 SurfaceView 的工作方式有点不同。