首页 热点专区 义务教育 高等教育 出国留学 考研考公

android 联系人头像取首汉子的首字母怎么做

发布网友

我来回答

1个回答

热心网友

在android 4.4.3上面,联系人的头像默认显示首字母,但是不支持中文字符

如果联系人名字的第一位是英文字符(a-z "| A-Z),则默认头像将显示该首字母。
如果支持中文时显示第一个汉字,那就happy了。
那就看看如何通过修改源代码来实现这一小功能吧~
我们还是先了解下联系人头像加载的流程吧~
联系人头像加载这个问题还是很有意思的,在Contacts中使用ContactPhotoManager类(严格来讲是这个类的子类)来实现头像的异步加载。
这个类还使用了LruCache来缓存图片,相当的强大,对图像的异步加载和缓存有兴趣的同志们可以看看。
以主页面的联系人列表加载头像为例。大致的调用流程为(只针对没有设置头像的联系人,即photoUri是null):
DefaultContactListAdapter->bindView()
  ContactEntryListAdapter->buildQuickContact()
    ContactEntryListAdapter->getDefaultImageRequestFromCursor()
      ContactPhotoManagerImpl->loadPhoto()->provider:LetterTileDefaultImageProvider // 注意,使用的是DEFAULT_AVATAR对象
        LetterTileDefaultImageProvider->applyDefaultImage()
          LetterTileDefaultImageProvider->getDefaultImageForContact()
            LetterTileDrawable->drawLetterTile()->firsr char:高
在drawLetterTile函数执行drawText之前会调用isEnglishLetter来判断字符串的首字符是否为英文字符,如果是,则将首字母画上去

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com