博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android圆角遮罩view
阅读量:7249 次
发布时间:2019-06-29

本文共 453 字,大约阅读时间需要 1 分钟。

思路

项目开发过程中会用到一些圆角控件,但是每次有想单独添加圆角的控件的时候,又得自定义这个控件,于是想找个一劳永逸的方式来解决这个问题。左思右想,为何不找个方式去给想添加圆角的控件上面加一个遮罩?只要遮罩颜色跟背景颜色相同,同样可以达到圆角控件的效果。不管什么控件往上一盖就是圆角,多省事。

说干就干,首先确定遮罩裁切的方案:

如图,在四个角先画正方形,然后画以正方形边长为半径的扇形,将它们的交集部分切除就行了。
那么问题来了:view绘制的时候如何镂空。查询了相关的博客,找到这篇,简单来说呢,就是在canvas上分别绘制源图像与目标图像,然后用PorterDuffXfermode指定彼此重叠的绘制规则。关于PorterDuffXfermode网上有很多相关的例子,我就不多说,直接查询就是。

其中绘制矩形与扇形的时候,是以圆心为原点,x正轴为0°,沿顺时针方向进行绘制。比如你要绘制第二象限部分的扇形,就得填起始角度180°,终止角度270°,扫过的角度为90°。如下图。

效果图

代码

代码见:

转载地址:http://iehbm.baihongyu.com/

你可能感兴趣的文章
react onCompositionStart/Update/onCompositionStartEnd 触发时机
查看>>
一个强大的批处理文件
查看>>
基于 Swoole 的微信扫码登录
查看>>
Largest Rectangle in Histogram
查看>>
聊聊pg jdbc的queryTimeout及next方法
查看>>
golang 依赖管理
查看>>
Java常用工具类整理
查看>>
FED之必备技能
查看>>
高性能磁盘 I/O 开发学习笔记 -- 硬件原理篇
查看>>
一个还算优雅的 react 图片组件
查看>>
JSON应知应会
查看>>
一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器)
查看>>
设计模式之代理模式
查看>>
客服系统从Require.js到Webpack
查看>>
React 16 中的异常处理
查看>>
独家解析Javascript原型继承
查看>>
springboot集成mqtt
查看>>
重拾css(3)——学习css的思路
查看>>
SegmentFault 社区访谈 | 有位公子在奇舞
查看>>
jQuery源码分析之jQuery的定义
查看>>