仿钉钉头像

本文介绍如何使用canvas和Bitmap实现仿钉钉聊天头像的控件,包括头像的绘制、昵称显示和底色处理。通过计算坐标和使用PorterDuffXfermode效果,实现不规则图片绘制,支持1至4个用户头像排列。
摘要由CSDN通过智能技术生成

转载请注明出处:http://blog.csdn.net/binbinqq86/article/details/78329238

项目中要用到一个聊天头像的控件,跟钉钉的类似的这种,于是乎自己就想撸一个出来,虽然网上也有现成的,但别人的总是需要修修改改,还不如自己从头开始,也方便后续维护,直接看效果图:

这里写图片描述

怎么样,还不错吧,哈哈~自我感觉良好,唯一不同的是钉钉两个人和三个人是左右横排的,我们的是竖排的。下面我们来简单分析一下实现原理:

首先抛开图片不说,先看底色+昵称,底色就很简单了,根据用户的唯一id,来指定一个规则,进行显示不同的颜色,这个看产品具体来定了,整体就采用canvas的drawCircle、drawArc、drawText等方法来绘制了,看看应该是挺容易的,难点就是具体的坐标计算,只要算准位置,这个自定义view就是分分钟了,哈哈~再来分析一下有图片的情况,图片的绘制当然就是drawBitmap了,另外再加上Xfermode这个强大的效果处理(请参考我上一篇文章—— Canvas的drawBitmap以及Paint的PorterDuffXfermode使用心得),也是分分钟实现我们想要的不规则图片绘制。好了,原理分析完了,下面直接上代码,核心部分就是我们的onDraw方法了:

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (count == 0) {
            return;
        }
        //必须先设置字体大小
        if (count == 1) {
            
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值