Android-->如何快速写出属于自己的圆角图片控件

客官请看图

image.png

无处不在的圆角, 到处满天飞开源库, 是时候写一个属于自己的圆角控件了.

原理

通过Canvas强大的clip特性, 你要想什么形状的图片都可以的…

class CircleImageView(context: Context, attributeSet: AttributeSet? = null) : AppCompatImageView(context, attributeSet) {

    val clipPath = Path()

    val paint: Paint by lazy { Paint(Paint.ANTI_ALIAS_FLAG) }

    override fun onDraw(canvas: Canvas) {
        val size = Math.min(measuredHeight - paddingTop - paddingBottom, measuredWidth - paddingLeft - paddingRight)
        val cx = (paddingLeft + size / 2).toFloat()
        val cy = (paddingTop + size / 2).toFloat()
        val cr = (size / 2).toFloat()

        clipPath.addCircle(cx, cy, cr, Path.Direction.CW)
        canvas.clipPath(clipPath)
        super.onDraw(canvas)

        paint.style = Paint.Style.STROKE
        paint.color = Color.WHITE
        canvas.drawCircle(cx, cy, cr, paint)//如果不在外圈绘制一圈圆形的话, 图片的锯齿看起来很丑...
    }
}

写在后面

代码很少, 但是clip的特性, 很好的体现出来了. 你完全使用这个特性, 玩出属于你的浪花.

少年, 你缺少的只是动手. just do.

联系作者

请使用QQ扫码加群, 小伙伴们在等着你哦!

关注我的公众号, 每天都能一起玩耍哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值