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

相关推荐
疯华整猫5 小时前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉
Carson带你学Android6 小时前
AI时代,你的 App 会被 Agent 这三种方式调用
android·ai编程
恋猫de小郭7 小时前
Flutter 下 AOT 一个你怎么都想不出来的 Bug ,JIT 正常的计算,在 AOT 居然算错了
android·前端·flutter
好的佩奇1 天前
Dart 之扩展方法
android·flutter·dart
三少爷的鞋1 天前
换个思路理解:非阻塞挂起
android
好的佩奇1 天前
蓝牙之经典蓝牙
android·flutter·蓝牙
传奇开心果编程1 天前
【Flutter踩坑排雷】第19课:路由硬编码坑|字符串路由书写错误,页面跳转失败排查
android·flutter·ios·移动开发·跨平台·ui框架·声明式ui
微小的鱼1 天前
Linux的渲染与显示系统链路
android·java·linux
道尔柯南2 天前
C++ string 类详解:从常用接口到深拷贝,彻底掌握字符串处理
android·java·c++
唐诺2 天前
5、Android JNI 动态注册中的“签名“详解
android·jni