我应该如何覆盖VideoView的onDraw以使其具有透明的圆角?

时间:2014-04-25 18:38:18

标签: android android-videoview

显然,使用背景形状在VideoView的情况下不起作用 此外,还有很多文章如何为ImageView重写onDraw并使其角落成为圆角。

但我如何为VideoView做到这一点?

3 个答案:

答案 0 :(得分:6)

根据文档中的说明,无法使用VideoView或任何SurfaceView进行透明圆角处理:

  

表面是Z有序的,因此它位于保持SurfaceView的窗口后面; SurfaceView在其窗口中打孔以允许其表面显示。

使用TextureView似乎理论上可行,因为它应该表现得像普通视图。但是我也无法做到:尝试TextureView图层绘制的Porter Duff模式和父ShapeDrawable前景中的FrameLayout

使用VideoView,您可以做的是制作纯色的角落。使用带有透明内容的9补丁和纯色的角落,并将其设置在最先绘制的ImageView上。

修改:检查this示例项目。

screenshot

答案 1 :(得分:0)

我认为没有简单的方法可以做到这一点。你可以试试这个例子:

  • 在ImageView窗口下放置一个视频窗口
  • 使用其中具有透明形状的纯色PNG填充ImageView
  • 使用FrameLayout或RelativeLayout来保存两个视图,因为它们允许视图轻松相互重叠

答案 2 :(得分:0)

通过将TextureView放在CardView内(来自支持库),可以轻松实现此效果。

然后您可以在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>