裁剪SurfaceView

📅 2026/7/16 9:43:37 👁️ 阅读次数 📝 编程学习
裁剪SurfaceView

并不是真正的裁剪SurfaceView,而是用FrameLayout包裹 SurfaceView达到视觉裁剪。

举例:给外层 FrameLayout 设置圆角轮廓 + 开启轮廓裁剪,让 FrameLayout 把超出圆角的部分 “挡住”,从而让矩形 SurfaceView 看起来是圆角的。

activity_main.xml

<FrameLayout android:id="@+id/frame_layout" android:layout_width="2560px" android:layout_height="1168px"> <SurfaceView android:id="@+id/surfaceview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true"/> </FrameLayout>

MainActivity.java

mFrameLayout = findViewById(R.id.frame_layout); mFrameLayout.setOutlineProvider(new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { // 定义圆角矩形轮廓 outline.setRoundRect(0, 10, view.getWidth(), view.getHeight()-10, 70); } }); mFrameLayout.setClipToOutline(true); // 开启轮廓裁剪 mFrameLayout.setClipChildren(true); // 裁剪所有子View

outline.setRoundRect( left, // 左边界 top, // 上边界 right, // 右边界 bottom, // 下边界 radius // 圆角半径 );