Android设置边框圆角

在Android开发中,圆角设计十分常见,那么实现边框圆角有几种形式呢?

文章目录


设置圆角边框样式

常见的方式是在drawable文件夹下设置一个xml文件的边框样式,比如

java 复制代码
 <shape android:shape="rectangle">
            <solid android:color="@color/grid_item_bg_normal" />
            <corners android:radius="35px" />
        </shape>

其实这样的操作是改变背景,同时会导致内容穿透的效果。

使用ClipToOutline进行裁切

此方法是Android5.0之后提供,具体操作如下

java 复制代码
private final ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {
        @Override
        public void getOutline(View view, Outline outline) {
            Rect selfRect = new Rect(0, 0, view.getWidth(), view.getHeight());
            outline.setRoundRect(selfRect, 20);
        }
    };

ivQrCode.setOutlineProvider(viewOutlineProvider);
ivQrCode.setClipToOutline(true);

先声明ViewOutlineProvider此类,自定义实现需要设置的属性,该类是专门用来处理阴影和裁切的,然后在应用裁切即可。

最后

Outline相对于shape来说,是真正的实现边缘裁切的,shape其实只是设置背景而已,它的view的范围还是那个正方形的范围。最明显的表现于,shape如果内容填满布局,会看到内容超出圆角,而Outline不会。当然如果你shape配合padding的话肯定也不会出现这种情况。

参考
Android边框裁切的正确姿势实现示例

相关推荐
野生的码农8 小时前
放过自己,降低预期,及时行乐
android·ai编程
huwuhang9 小时前
索尼PS3游戏合集【中文游戏】8.12T 1430个游戏+PS3模拟器
android·游戏·智能手机·游戏机·电视
Grackers11 小时前
Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程
android
踩着两条虫11 小时前
AI驱动的Vue3应用开发平台深入探究(十):物料系统之内置组件库
android·前端·vue.js·人工智能·低代码·系统架构·rxjava
sam.li11 小时前
JADX MCP 原理与使用部署
android·逆向·jadx
冬奇Lab11 小时前
Android 15音频子系统(五):AudioPolicyService策略管理深度解析
android·音视频开发·源码阅读
亚历克斯神11 小时前
Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)
android·数据库·安全·flutter·华为·harmonyos
dalancon13 小时前
SurfaceControl 的事务提交给 SurfaceFlinger,以及 SurfaceFlinger 如何将这些数据设置到对应 Layer 的完整流程
android
dalancon13 小时前
SurfaceFlinger Layer 到 HWC 通信流程详解
android
cccccc语言我来了13 小时前
Linux(9)操作系统
android·java·linux