方法1 public class TextureVideoViewOutlineProvider extends ViewOutlineProvider { private float mRadius; public TextureVideoViewOutlineProvider(float radius) { this.mRadius = radius; } @Override public void getOutline(View view, Outline outline) { Rect rect = new Rect(); view.getGlobalVisibleRect(rect); int leftMargin = 0; int topMargin = 0; Rect selfRect = new Rect(leftMargin, topMargin, rect.right - rect.left - leftMargin, rect.bottom - rect.top - topMargin); outline.setRoundRect(selfRect, mRadius); } }
mView.setOutlineProvider(new TextureVideoViewOutlineProvider(radius)); mView.setClipToOutline(true);
所有的view通过这种方式都可以加圆角
但这种方法会特别卡,推荐下种方式
方法2
外部包裹cardview:
implementation 'androidx.cardview:cardview:1.0.0'
<android.support.v7.widget.CardView
xmlns:card_view=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/card_view"
android:layout_gravity=
"center"
android:layout_width=
"200dp"
android:layout_height=
"200dp"
card_view:cardCornerRadius=
"4dp"
>
<TextView
android:id=
"@+id/info_text"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</android.support.v7.widget.CardView>
card_view:cardCornerRadius=
"4dp" 设置圆角