week.ioAndroid UI的收集Android代码封装

一个实现城市选择、联系人选择的库

2016-03-27  本文已影响2406人  YoKey

2016-10-9 更:

进行一次几乎重写的大规模重构:

1、从ListView更改为RecyclerView的实现

2、性能优化,更易使用的API,更易拓展的HeaderView等等.**

改版后的Github传送门

相关阅读:[设计模式]记一次开源库的重构历程


这个月被楼上拉走做了一个月的苦力,总算闲下来了,水一篇简书先。

楼上app改版有个的城市选择页面,需求就是带字母索引的城市选择ListView/RecyclerView,在github上找了一圈,发现要么是功能有限的封装库,要么就是没有经过封装的Demo。所以呢,最终决定自己造轮子--IndexableStickyListView。

10几20行代码就可以轻松实现带有 城市选择、搜索 or 联系人选择、搜索等功能的界面。

效果图

先看Demo效果,提供2种类型的悬浮提示框,个人更喜欢图2中的Material Design风格的右侧气泡炫悬浮框。

常规居中悬浮框.gif
MD风格气泡悬浮框.gif

特性

1、根据数据源,自动排序生成字母索引Bar,以及字母Header

2、字母Header是粘性的(Sticky)

3、ListView中的Item,可以完全自由定制、拓展

4、绑定数据源、搜索等功能,都是异步的,通过HandlerThread优化实现

5、自由添加Header数据(GPS定位、热门城市功能),ListView的addHeaderView功能也可以随意使用

6、提供2种悬浮提示View,常规居中 以及 MD风格的右侧气泡

工作过程

1、初始化、绑定数据
用一个简单的图来表示吧(IndexBar就是右侧的字母条)

IndexableStickyListView工作过程.png

2、搜索、过滤数据
对于搜索,首先我们要确保数据搜索过程是异步的,不然在数据比较多的情况下,肯定会掉帧卡顿的。

这部分我单独写了一篇简书介绍:[Android]谈谈“搜索”,2种场景下的最优解

最后

该库还需要后续的维护和优化,比如使用的pinyin4j.jar过大,效率也不高,下一步打算替换成更小的拼音转化库。
现在使用TinyPinyin库替换了Pinyin4j.jar库,体积减小108K,速度提升了4倍!

在使用中有任何问题,随时可以联系我。

最后再次放上源码地址,点这里,点这里

上一篇下一篇

猜你喜欢

热点阅读