Android之联系人A~Z快速索引效果

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

        说到android的联系人的快速索引,很快就能想到系统自带的快速索引效果,而且现在很多主流的应用都有用到,如QQ的通讯录,微信的通讯录等等。

要想实现快速索引的效果,我们先来理下其实现原理:

        首先,我们需要定义一个自定义的控件,得到控件(自定义控件SlideBar)的总高度与宽度,通过SlideBar控件的总高度算出从A~Z(一般最后都有个#)每个字符的需要的高度,再通过循环偏移单个字符高度来画出每个字符,这样第一步就完成了,接着我们要想象下,当我们触摸手机来滑动快速索引的时候,控件变化的原理,在这里最重要的一点就是计算出我们触摸手机时,当前位置的索引(通过当前触摸手机所在的Y坐标除以SlideBar的总高度得出触摸位置所占等分,然后乘以字符的总个数得出当前索引),并有个监听回调提供出去,然后再在画字符的时候根据当前触摸的索引位置来画出触摸时的效果,这样A~Z快速索引自定义控件原理就算基本完成了,然后获取获取手机联系人通过监听回调的索引的字符与联系人首字母的字符做匹配就可以实现联系人的快速索引了。

        理解了其原理实现起来就简单了,仔细观察QQ通讯录的快速索引,会发现它的控件正常(非触摸)时和触摸时用的是两张图片切换,不过实现原理也一样啦,只不过省掉了话字母那一段流程,改成画图片而已。还有,我看到Miui系统的自带联系人快速索引效果也蛮好看的,它是已一个圆形背景来标识当前选中字母所在位置的。

        下面是最近写的一个A~Z快速索引的效果,那个圆形背景风格的跟Miui的还是有点区别,滑动时非平滑滑动,暂时有四种风格,后续想到其他风格的可能会再添加,并且文本的字体大小,颜色,背景都可以自己随意设置。

        先看下效果图:

gif默认时默认风格(触摸时)

拉伸风格(触摸时)圆形风格(触摸时)

【自定义控件】一、字母索引控件,仿小米联系人字母列表 字母索引控件,仿小米联系人字母列表,控件代码超级简单,很适合学习,为二次开发提供思路。 阅读详情

相关推荐

Androidstudio自定义控件,快速索引联系人的首字母条,效果图及代码详解

工作中很多地方都需要使用到自定义控件,目前市场上大部分的框架已经可以满足使用,同样也有公司内部需求自己开发样式,这方面有兴趣的哥们可以一起聊聊!

android_0327的博客 1932

Android自定义View实现通讯录字母索引(仿微信通讯录)

本文主要介绍了Android自定义View实现通讯录字母索引(仿微信通讯录)的实现步骤与方法,具有很好的参考价值,下面跟着小编一起来看下吧

android 通讯录(A-Z)带可模糊查询搜索

详情:http://blog.csdn.net/qq_17299423/article/details/51490686

android开源库合集

android开源库合集 1、阿里巴巴开源的自定义viewpager,支持多重动画,横向纵向,多页面显示 项目地址:https://github.com/alibaba/UltraViewPager 2、android版本更新功能。使用retrfit2 rxjava2 okhttp3实现多文件多线程下载(支持断点下载), android版本更新:通知栏更新,对话框更新 兼容8.0 ...

时光荏苒的博客 8万+

Android实现联系人按字母检索,GitHub - doubijuan/ContactsDome: Android 使用ListView的A-Z字母排序功能实现联系人模块,主要学习了ListVie...

ContactsDomeAndroid 使用ListView的A-Z字母排序功能实现联系人模块,主要学习了ListView的A-Z字母排序功能以及根据输入框的输入值改变来过滤搜索结果,如果输入框里面的值为空,更新为原来的列表,否则为过滤数据列表,包括汉字转成拼音的功能先来看一下最终效果图:现在我们来看下项目结构图其实很多都是和上一篇文章一样的,我在这里就不多说啦,不是很明白的地方,可以看一下上一篇...

weixin_39705850的博客 2816

android 通讯录好友排序+字母索引

1.首先自定义TextView继承TextView 2.重写onTuchEvent方法,对txtview的状态进行判断 3.自定义接口回调,在onTuchevet事件里边对我们的接口方法进行赋值 4.汉语转拼音工具类,有两种方法: 使用第三方pinyin4j的jar包。 下载地址  , Android Studio也可直接依赖 compile 'com.belerweb:pinyin4j...

Android_Code的博客 1295

实现ListView A~Z快速索引

ListView A~Z快速索引这种效果在通信录和城市列表中经常看到,方便用户查找,是一种增加用户体验的好方法。 实现步骤:    1.自定义一个名叫SlideBar 的View。    2.在布局文件中加入这个自定义的View。    3. 在Activity中处理监听事件。 接下来讲讲我是怎样实现的: 先来看SlideBar这个类: package com.folyd

对酒当歌 1万+

android a z 快速定位,实现ListView A~Z快速索引

ListView A~Z快速索引这种效果在通信录和城市列表中经常看到,方便用户查找,是一种增加用户体验的好方法。实现步骤:1.自定义一个名叫SlideBar 的View。2.在布局文件中加入这个自定义的View。3. 在Activity中处理监听事件。接下来讲讲我是怎样实现的:先来看SlideBar这个类:package com.folyd.tuan.view;import android.con...

weixin_39990660的博客 224

Android ListView A~Z快速索引(改进版)

上一篇文章虽然实现了ListView 快速索引效果,但是有一个小小的Bug。这个Bug我在前面也说了,这篇文章就来解决这个Bug。 我研究的时候发现只要showBg值为true,中间的字母就显示,而当showBg 的值为false的时候中间的字母就可以消失。只要SlideBar的状态为ACTION_DOWN和ACTION_MOVE 的时候showBg的值为true,而ACTION_UP

对酒当歌 5471

Android-联系人A~Z列表

Android-联系人A~Z列表实现旅途将右侧A~Z显示出来 自定义一个A~Z垂直显示的View(自定义控件命名为:LetterView.java)/** * 靠右的字母控件 */ public class LetterView extends View { /**纵向显示的所有字符*/ public static final String letters = "*ABCDEFGHIJKLMNOPQ

空白的博客 1121

android a z 快速定位,Android ListView A~Z快速索引(改进版)

上一篇文章虽然实现了ListView 快速索引效果,但是有一个小小的Bug。这个Bug我在前面也说了,这篇文章就来解决这个Bug。我研究的时候发现只要showBg值为true,中间的字母就显示,而当showBg 的值为false的时候中间的字母就可以消失。只要SlideBar的状态为ACTION_DOWN和ACTION_MOVE 的时候showBg的值为true,而ACTION_UP的时候sho...

weixin_35931397的博客 211

ListView A~Z快速索引--提供源码

ListView A~Z快速索引这种效果在通信录和城市列表中经常看到,方便用户查找,是一种增加用户体验的好方法。 使用的知识点: 1,汉字转拼音,使用pinyin4j-2.5.0.jar 2,定义类实现Comparable接口,方便排序 3,自定义控件QuickIndexBar继承view(重点) 4,使用接口回调,暴露给外部使用 实现步骤: 1,设置布局 2,使用pinyin4j

wk843620202的专栏 1145

Android ListView A~Z快速索引

上一篇文章虽然实现了ListView 快速索引效果,但是有一个小小的Bug。这个Bug我在前面也说了,这篇文章就来解决这个Bug。 我研究的时候发现只要showBg值为true,中间的字母就显示,而当showBg 的值为false的时候中间的字母就可以消失。只要SlideBar的状态为ACTION_DOWN和ACTION_MOVE 的时候showBg的值为true,而ACTIO

Max一直在学习 771
上一篇: Android之根据Uri获得图片或视频文件路径(解决4.4以上版本得不到路径的情况)
下一篇: Android之EditText 为密码输入框时,密码的显示与隐藏
Jenly_Yu
博客等级 码龄16年 129粉丝 40原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值