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边框裁切的正确姿势实现示例

相关推荐
xiangxiongfly91517 分钟前
Android ViewRootImpl源码分析
android·绘制流程·viewrootimpl·activitythread
Yang-Never31 分钟前
ADB ->Android 实时监控内存
android·开发语言·adb·android studio
zhangren024681 小时前
Laravel5.x版本特性全解析
android·vue.js·spring boot·mysql
2501_915918411 小时前
WebKit 抓包,WKWebView 请求的完整数据获取方法
android·前端·ios·小程序·uni-app·iphone·webkit
EasyControl移动设备管理1 小时前
打破系统壁垒:从 Android 到 macOS,打造全平台统一终端管理(MDM)方案
android·人工智能·物联网·macos·移动设备管理·mdm系统·跨区域设备
帅得不敢出门1 小时前
Android Framework中调用由java编译成的jar接口
android·java·framework·jar
火山上的企鹅1 小时前
QGC 二次开发实战:Android 单机离线授权怎么落地
android·qt·qgroundconrol·离线授权
黄林晴1 小时前
Swift 杀进 Android,Google 和 Apple 都要失眠了?
android·前端·swift
黄林晴1 小时前
改完代码1秒生效,Compose热重载来了!
android
黄林晴1 小时前
紧急适配!Android 联系人权限重构,READ_CONTACTS 全面废弃
android