Android | ShapedImageView 之 边框 & 自定义 Path 实现
在 实现图片圆角显示的几种方式 我分享了一个不到 100 行代码实现的圆角 ImageView,后面根据需求增加了,边框和自定义 Path。这篇文章就是来分享具体是怎样实现的。
边框
先放一张动图,应该就能明白其中的原理了。
以圆形为例:
- 首先绘制一张全尺寸矩形,颜色为边框的颜色;
- 再画一个小一点的圆形,把第一步的图层掏空,这个圆形小多少就是边框的宽度;
- 最后画一个正常大小的圆形,把多余的都扣掉。
扣图都是使用的 Xfermodes
具体到
- 步骤 2,PorterDuff.Mode.DST_OUT:去交集,显示下层
- 步骤 3,PorterDuff.Mode.DST_IN:取交集,显示下层。
核心代码:
1 | mStrokePaint.setXfermode(null); |
自定义 Path
这个功能是源于公司项目需要,基于这个可以实现很多意想不到的效果,如下图
- 掏空的专辑封面
- 电影券,优惠券
原理还是 Xfermodes
的扣图功能,区别就是把接口暴露出来,就可以自定义啦。
使用
广告时间到啦,这么好的库要怎么使用呢?
1 | compile 'cn.gavinliu.android.lib:ShapedImageView:0.8.2' |
Circle
1 | <cn.gavinliu.android.lib.shapedimageview.ShapedImageView |
Round Rect
1 | <cn.gavinliu.android.lib.shapedimageview.ShapedImageView |
PathExtension
1 |
|
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Gavin Liu - 代码人生与科技生活
评论