裁剪SurfaceView

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

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

activity_main.xml

java 复制代码
<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

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 // 圆角半径 );

相关推荐
alexhilton10 小时前
Room Fts4:全文搜索替代 SQL LIKE
android·kotlin·android jetpack
hai_android15 小时前
把 Android App 打包成系统应用(System App)
android·kotlin·android jetpack
JMchen16 小时前
【Jetpack 内核实战 01】开篇:Jetpack 组件全家桶核心逻辑与专栏完整规划
android·kotlin·android jetpack
骑着蜗牛撵大象32718 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
hunterandroid18 小时前
Retrofit 网络请求的异常处理与重试策略实战
android
sejinan19 小时前
极致轻量与秒级起播:NativeWasmTv 开源硬核技术解析与升级版体验
android·开源·webview·tv
小羊没烦恼!19 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
mmsx19 小时前
Android 静默失败实录:五个没有日志的线上事故
android·kotlin
hai_android20 小时前
从零实现一个支持跨进程(IPC)的自定义 Toast
android·kotlin·android jetpack
龙腾-虎跃20 小时前
基于 SIP 协议的自研电话终端:FreeSWITCH 语音与视频通信实战
android·音视频·freeswitch·sip协议终端·wertc