思路
项目开发过程中会用到一些圆角控件,但是每次有想单独添加圆角的控件的时候,又得自定义这个控件,于是想找个一劳永逸的方式来解决这个问题。左思右想,为何不找个方式去给想添加圆角的控件上面加一个遮罩?只要遮罩颜色跟背景颜色相同,同样可以达到圆角控件的效果。不管什么控件往上一盖就是圆角,多省事。
说干就干,首先确定遮罩裁切的方案:canvas
上分别绘制源图像与目标图像,然后用PorterDuffXfermode
指定彼此重叠的绘制规则。关于PorterDuffXfermode
网上有很多相关的例子,我就不多说,直接查询就是。 其中绘制矩形与扇形的时候,是以圆心为原点,x正轴为0°,沿顺时针方向进行绘制。比如你要绘制第二象限部分的扇形,就得填起始角度180°,终止角度270°,扫过的角度为90°。如下图。
效果图
代码
代码见: