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

相关推荐
kk爱闹29 分钟前
【挑战14天学完python和pytorch】- day01
android·pytorch·python
每次的天空2 小时前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
恋猫de小郭3 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
断剑重铸之日4 小时前
Android自定义相机开发(类似OCR扫描相机)
android
随心最为安4 小时前
Android Library Maven 发布完整流程指南
android
岁月玲珑4 小时前
【使用Android Studio调试手机app时候手机老掉线问题】
android·ide·android studio
还鮟8 小时前
CTF Web的数组巧用
android
小蜜蜂嗡嗡9 小时前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
aqi009 小时前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
zhangphil11 小时前
Android理解onTrimMemory中ComponentCallbacks2的内存警戒水位线值
android