如何在android中创建圆角videoview?

Mih*_*hah 3 android rounded-corners android-videoview

在我的应用程序中,我想将视频视图显示为圆角。我尝试将 videoview/surfaceview 放置在线性布局内,并将圆角设置为线性布局。但它并不完美。我无法为视频视图/表面视图设置圆角。我想设置视图如下图所示: 在此输入图像描述

有人知道如何做到这一点吗?

odi*_*ity 7

不知道为什么当解决方案非常简单时会有这么多不好的答案(只要你的最小 sdk > 21)。创建一个形状并将其放在视频上方是行不通的,因为您显然希望背景是透明的以查看其后面的视图。

我在这里找到了答案Android View Clipping。您只需将视频视图放入框架布局中,向框架布局添加圆形背景,添加轮廓提供程序并将框架布局剪辑到轮廓即可。

的背景rounded_video_background

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#000000"/>
    <corners android:radius="16dp" />

</shape>
Run Code Online (Sandbox Code Playgroud)

其内部的框架布局和视频视图:

<FrameLayout
        android:id="@+id/video_view_container"
        android:layout_width="90dp"
        android:layout_height="120dp"
        android:background="@drawable/rounded_video_background"
        android:outlineProvider="background">

        <VideoView
            android:id="@+id/video_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            />

    </FrameLayout>
Run Code Online (Sandbox Code Playgroud)

最后一步是剪切轮廓(没有找到在 xml 中实现的方法,所以我以编程方式完成了): video_view_container.clipToOutline = true


小智 5

它对我有用,

        <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_gravity="center"
        android:layout_width="match_parent"
        card_view:cardCornerRadius="25dp"
        android:layout_height="wrap_content">
    <VideoView
        android:id="@+id/video"
        android:layout_width="match_parent"
        android:layout_height="215dp" />
    </android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

  • 卡片视图是垃圾,因为内部视频视图没有圆角半径,正方形会出来。 (3认同)