
前言
我们在平时的开发中,经常会遇到圆角需求,比如下图

一般的实现方法是上面的图片左上和右上设置圆角,下面的文字部分左下和右下设置圆角,而 Glide 默认是不支持指定位置设置圆角的,需要通过自定义 Transformation 实现,而 GIF 动图也是不支持圆角的。
有些同学说了,加个遮罩不就行了吗?
先不说会不会被视觉小姐姐喷:一个圆角都做不了,还要我给你做遮罩图!
我自己本身也是无法接受这种实现方式的…

那么,实现一个通用的圆角布局,不就可以以不变应万变了吗?
正文
如何将 layout 剪裁为圆角?
我们知道 view 绘制时会调用 draw 方法,draw 方法中有大量逻辑,直接复写该方法是不现实的,看下 draw 方法中的一段注释
Draw traversal performs several drawing steps which must be executed
in the appropria

这篇博客介绍了如何在Android中实现一个通用的圆角布局,包括对布局进行圆角剪裁的原理和方法。通过复写`onDraw`和`dispatchDraw`方法,利用画布的save和restore机制,以及`PorterDuffXfermode`来实现抗锯齿的圆角效果。同时,针对Android P版本的行为变更,提供了兼容性处理。博客还提供了自定义的`RoundRelativeLayout`源码供参考。
最低0.47元/天 解锁文章
958

被折叠的 条评论
为什么被折叠?



