原标题:Android 实现一个通用的圆角布局
前言
我们在平时的开发中,经常会遇到圆角需求,比如下图
一般的实现方法是上面的图片左上和右上设置圆角,下面的文字部分左下和右下设置圆角,而 Glide 默认是不支持指定位置设置圆角的,需要通过自定义 Transformation 实现,而 GIF 动图也是不支持圆角的。
有些同学说了,加个遮罩不就行了吗?
先不说会不会被视觉小姐姐喷:一个圆角都做不了,还要我给你做遮罩图!
我自己本身也是无法接受这种实现方式的…
那么,实现一个通用的圆角布局,不就可以以不变应万变了吗?
正文
如何将 layout 剪裁为圆角?
我们知道 view 绘制时会调用 draw 方法,draw 方法中有大量逻辑,直接复写该方法是不现实的,看下 draw 方法中的一段注释
Draw traversal performs several drawing steps whichmust be executedinthe appropriate order: 1. Draw the background // drawBackground 2. If necessary, save the canvas' layers to prepare for fading 3. Draw view's content // onDraw 4. Draw children // dispatchDraw 5. If necessary, dra