github地址:GitHub - WeiLianYang/RoundImageView: 🔥🔥🔥用于设置 ImageView 的 圆角、外边框颜色、外边框宽度
 
添加依赖
 
repositories {mavenCentral()
} 
implementation 'io.github.weilianyang:RoundImageView:1.0.2'
 
效果预览:
 
 

 
 
 

 
一、控件样式
 
<declare-styleable name="RoundImageView"><!-- 圆角大小,如果只设置了此值,则默认会使用其作为所有圆角的值 --><attr name="riv_radius" format="dimension" /><!-- 顶部左侧圆角大小 --><attr name="riv_topLeft_radius" format="dimension" /><!-- 顶部右侧圆角大小 --><attr name="riv_topRight_radius" format="dimension" /><!-- 底部左侧圆角大小 --><attr name="riv_bottomLeft_radius" format="dimension" /><!-- 底部右侧圆角大小 --><attr name="riv_bottomRight_radius" format="dimension" /><!-- 作为圆形图片,和 riv_radius 一起使用。如果未设置 riv_radius,半径将取宽高最小值的一半 --><attr name="riv_roundAsCircle" format="boolean" /><!-- 外边框颜色 --><attr name="riv_borderColor" format="color" /><!-- 外边框宽度 --><attr name="riv_borderWidth" format="dimension" /></declare-styleable>
 
二、属性介绍
 
| 属性 | 值 | 说明 | 
|---|
| riv_radius | 单位dp | 圆角大小,如果只设置了此值,则默认会使用其作为所有圆角的值 | 
| riv_topLeft_radius | 单位dp | 顶部左侧圆角大小 | 
| riv_topRight_radius | 单位dp | 顶部右侧圆角大小 | 
| riv_bottomLeft_radius | 单位dp | 底部左侧圆角大小 | 
| riv_bottomRight_radius | 单位dp | 底部右侧圆角大小 | 
| riv_roundAsCircle | true or false | 作为圆形图片,和 riv_radius 一起使用。如果未设置 riv_radius,半径将取宽高最小值的一半 | 
| riv_borderColor | 颜色值 | 外边框颜色 | 
| riv_borderWidth | 单位dp | 外边框宽度 | 
 
三、在 xml 中使用
 
1. 分别指定4个圆角的大小
 
<com.william.widget.RoundImageViewandroid:layout_width="150dp"android:layout_height="150dp"android:scaleType="centerCrop"app:riv_bottomLeft_radius="32dp"app:riv_bottomRight_radius="25dp"app:riv_topLeft_radius="14dp"app:riv_topRight_radius="20dp" />
 
2. 作为圆形图片使用
 
<com.william.widget.RoundImageViewandroid:layout_width="150dp"android:layout_height="150dp"android:scaleType="centerCrop"app:riv_roundAsCircle="true" />
 
3. 设置外边框宽度和颜色
 
<com.william.widget.RoundImageViewandroid:layout_width="150dp"android:layout_height="150dp"android:scaleType="centerCrop"app:riv_borderColor="#ff00ff"app:riv_borderWidth="5dp"app:riv_radius="1dp" />
 
四、在 代码 中使用
 
1. 指定圆角大小及边框样式
 
/*** @param radius 圆角大小,当 asCircle 为 true 时,值作为圆形图片的半径,如果为0,则将取宽高最小值的一半* @param borderWidth 外边框宽度* @param borderColor 外边框颜色* @param asCircle 作为圆形图片使用,默认 false*/
fun setRadiusAndBorder(radius: Float,borderWidth: Float = 0f,@ColorInt borderColor: Int = 0,asCircle: Boolean = false,
) {this.radius = radiusthis.borderWidth = borderWidththis.borderColor = borderColorthis.roundAsCircle = asCircleupdateBorderPaint()
}
 
2. 分别指定4个圆角的大小及边框样式
 
/*** @param topLeftRadius 顶部左侧圆角大小* @param topRightRadius 顶部右侧圆角大小* @param bottomLeftRadius 底部左侧圆角大小* @param bottomRightRadius 底部右侧圆角大小* @param borderWidth 外边框宽度* @param borderColor 外边框颜色*/
fun setRadiusAndBorder(topLeftRadius: Float = 0f,topRightRadius: Float = 0f,bottomLeftRadius: Float = 0f,bottomRightRadius: Float = 0f,borderWidth: Float = 0f,@ColorInt borderColor: Int = 0
) {this.topLeftRadius = topLeftRadiusthis.topRightRadius = topRightRadiusthis.bottomLeftRadius = bottomLeftRadiusthis.bottomRightRadius = bottomRightRadiusthis.borderWidth = borderWidththis.borderColor = borderColorupdateBorderPaint()
}