Android 之 Fast Scroll 、字母索引栏

列表快速滚动,是比较常见的需求,特别是在通讯录上。

现在 Android 好多 APP 都是字母索引栏,其实字母索引是 IOS 那边的规范,很多人觉得好用就抄过来了。

在 Android 上原生的是叫 Fast Scroll ,特点是默认隐藏的,也没有一排的字母显示出来,只能在划动列表时出现。


Fast Scroll 实现方法:

  • 继承 ListActivity (普通的 Activity 貌似不行);
  • 调用 setFastScrollEnabled(true) (也可以在 XML 里设置)。
  • 配置索引(这一步比较麻烦,特别是中文)
例子: listview-section-based-fast-scroll-in-android

配置样式:(这里没运行测试的,仅供参考)


    

    




字母索引栏实现方法,比较原生的 FastScroll 就是要创建自定义的 View 来显示字母;
一般情况下,要先拿到中文的拼音首字母,如果是英文的就直接使用,然后按字母分类排列,添加索引配置。一切事件都要自己来做。
这个现在没看到比较简单纯粹的例子,我经历了几个项目,都是进行了大量的自定义配置。
可以参考一下蘑菇街的即时通讯开源项目: TTAndroidClient 。

拼音的生成有两种方式
  • 汉字转拼音android实现(HanziToPinyin类)
  • 使用Pinyin4j把汉字转化为拼音
使用 Android 内部的方法,看别人的经验,有些会转错,要自己调整码,不知道新版是否解决这些问题。
最新版的代码: HanziToPinyin.java 、 Transliterator.java;
例子我上次到 我的 CSDN 资源文件里了,暂时发现“呵”会转错为 “A”,也就是说正确率不是 100% 的。
原生通讯录的实现方式很经典,可以研究一下源码。

你可能感兴趣的:(Android)