Android 如何实现圆形头像

通常我们再做开发的时候,当需要某种效果的时候,我们通常都是通过Runtime的思维来思考如何实现。什么是runtime思维,其实思考什么时候触发目标的实现,然后在触发点来处理实现的开始。但是在Android中,特别是当需要某种UI的布局,效果的时候,这种Runtime思维通过会让我们使问题复杂化,好的解决方式是把所需的效果实现成具体的widget可以重复用,例如就像此文的CycleImageView。

JAVA Code 实现

代码中其实就是简单的继承了Imageview 组件,同时再ImageView自身在ui上画图的时候,在OnDraw方法中用Canvas绘画一个位图,并去掉锯齿,并画一个圆形图层,用PorterDuffXfermode 合并图像。
在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;如果它是部分透明的,那么它将会被染上下面的颜色。
下面的Xfermode子类可以改变这种行为:
AvoidXfermode 指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。
PixelXorXfermode 当覆盖已有的颜色时,应用一个简单的像素XOR操作。
PorterDuffXfermode 这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互。

关于CycleImageView的使用就像是用普通的ImageView是用一样!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值