前言
- 前段时间Google推送了文章 , Android Material 组件 1.2.0 现已发布 里面就有ShapeableImageView,不用像以前再写shape.
- 基本使用可以参考这一篇文章,Android ShapeableImageView使用
,里面已经介绍了官方的基本用法。
但是还是不够的,还是在学习下代码方式来使用这个新控件。
绘制原理
ShapeableImageView的实现方式其实和我很久以前写的一篇任意切割的实现方式本质是一样的,但是做到了更好封装和解耦(Google牛逼!)。
ShapeableImageView继承自ImageView,在onDraw方法中,调用了ImageView的绘制方法后,通过使用Xfermode的画笔来绘制路径,达到蒙蔽遮盖的效果,不懂的朋友百度Xfermode学习下。至于外边框则就是普通的画笔来绘制路径了。
Kotlin代码使用
以下使用方式参照推荐的Android ShapeableImageView使用
的案例转化为KT代码的效果图及其实现
// 圆形图片
iv_1.shapeAppearanceModel = ShapeAppearanceModel.builder()
.setAllCornerSizes(RelativeCornerSize(0.5f))
.build()
// 切角图片
iv_2.shapeAppearanceModel = ShapeAppearanceModel.builder()
.setAllCorners(CutCornerTreatment())
.setAllCornerSizes(dp2px(15f))
.build()
// 菱形图片
iv_3.shapeAppearanceModel = ShapeAppearanceModel.builder()
.setAllCorners(CutCornerTreatment())
.setAllCornerSizes(RelativeCornerSize(0.5f))
.build()
// 左上角90度扇形图片
iv_4.shapeAppearanceModel = ShapeAppearanceModel