In my application, I want to display videoview as a rounded corners. I have tried placing videoview/surfaceview inside linearlayout with rounded corner set to linearlayout. but it does not work perfectly. I can not set rounded corner to videoview/surfaceview. I want to set view as below image:
有人知道如何做到这一点吗?
不知道为什么当解决方案非常简单时会有这么多不好的答案(只要你的最小 sdk > 21)。创建一个形状并将其放在视频上方是行不通的,因为您显然希望背景是透明的以查看其后面的视图。
我在这里找到了答案Android 视图裁剪 https://stackoverflow.com/questions/5574212/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>
其内部的框架布局和视频视图:
<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>
最后一步是剪切轮廓(没有找到在 xml 中实现的方法,所以我以编程方式完成了):video_view_container.clipToOutline = true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)