在使用VideoView时,显然不能使用背景形状。 此外,有很多文章介绍如何覆盖ImageView的onDraw方法并使其边角变成圆形。
但是我该如何为VideoView实现相同的效果呢?
在使用VideoView时,显然不能使用背景形状。 此外,有很多文章介绍如何覆盖ImageView的onDraw方法并使其边角变成圆形。
但是我该如何为VideoView实现相同的效果呢?
根据文档,使用VideoView
或任何SurfaceView
都无法实现透明圆角:
表面被Z排序,因此它在持有其SurfaceView的窗口后面;SurfaceView在其窗口中打孔,以允许显示其表面。
使用TextureView
理论上似乎是可能的,因为它应该像普通视图一样运行。然而,我无法做到:尝试了TextureView
层绘制和父FrameLayout
前景中的ShapeDrawable
的Porter Duff模式。
使用VideoView
,您可以使固定颜色的圆角。使用带有透明内容和仅颜色固定的角落的9-patch,并将其设置在顶部绘制的ImageView
上。
编辑:请查看此示例项目。
您可以通过在支持库中使用CardView将TextureView放入其中,轻松实现此效果。
然后,您可以在CardView上设置圆角半径和阴影:
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp">
<TextureView
android:id="@+id/video"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</androidx.cardview.widget.CardView>
我认为没有简单的方法来实现这个。例如,您可以尝试以下方法: