Android一种实现任意View圆角的方案

这篇博客介绍了一种针对可滑动View如SurfaceView、ListView、ViewPager等实现圆角的特殊方案。由于常规方法无法满足需求,作者提出了通过获取背景图并裁剪圆角部分,再将其覆盖在目标View上方的方法,以达到圆角效果。文章详细阐述了实现原理,包括背景图的处理和View位置的获取。
摘要由CSDN通过智能技术生成

一种实现迫不得已的圆角实现方案

该方案只针对那些“善变”的View如 SurfaceView、ListView、Viewpager等可滑动实现的圆角方案,一般情况下你不会用到,用到说明你已经基本无奈了。
这是一种经过调研后的“无奈之下”实现的圆角方案,其中需求背景是在ViewPager、ListView等可滑动系列View的圆角方案,并可在SurfaceView、TextureView上使用圆角。用background 设置一个带圆角的drawable,事实表明该方案只能实现当前View的一种背景圆角。重写ondraw试了好几种方案没有找到合适的实现方案(surfaceview、textureview无效),如果该View是一个ViewGroup系列,则子View还带有自己的“前景”效果。如ImageView设置了一个src,或surfaceView播放视频这种情况下,圆角将会失效。产品说了,不实现圆角不准下班陪老婆带孩子,mmp就有了如下“迫不得已”的实现方案。

实现原理

1、将属于四个角与圆角弧线并集的部分背景图获取到,将view的位置获取出来计算出内贴圆角矩形,将获取出来的背景图掏空一个圆角矩形
2、将掏空后的带四圆角图片贴到目标view上方,达到一种圆角效果

1、将属于四个角与圆角并集的部分背景图获取到

当程序员之前:
这里写图片描述
当程序员之后:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值