一個實現(xiàn)城市選擇、聯(lián)系人選擇的庫

2016-10-9 更:

進行一次幾乎重寫的大規(guī)模重構(gòu):

1、從ListView更改為RecyclerView的實現(xiàn)

2、性能優(yōu)化,更易使用的API,更易拓展的HeaderView等等.**

改版后的Github傳送門

相關(guān)閱讀:[設(shè)計模式]記一次開源庫的重構(gòu)歷程


這個月被樓上拉走做了一個月的苦力,總算閑下來了,水一篇簡書先。

樓上app改版有個的城市選擇頁面,需求就是帶字母索引的城市選擇ListView/RecyclerView,在github上找了一圈,發(fā)現(xiàn)要么是功能有限的封裝庫,要么就是沒有經(jīng)過封裝的Demo。所以呢,最終決定自己造輪子--IndexableStickyListView。

10幾20行代碼就可以輕松實現(xiàn)帶有 城市選擇、搜索 or 聯(lián)系人選擇、搜索等功能的界面。

效果圖

先看Demo效果,提供2種類型的懸浮提示框,個人更喜歡圖2中的Material Design風(fēng)格的右側(cè)氣泡炫懸浮框。

常規(guī)居中懸浮框.gif

MD風(fēng)格氣泡懸浮框.gif

特性

1、根據(jù)數(shù)據(jù)源,自動排序生成字母索引Bar,以及字母Header

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

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

4、綁定數(shù)據(jù)源、搜索等功能,都是異步的,通過HandlerThread優(yōu)化實現(xiàn)

5、自由添加Header數(shù)據(jù)(GPS定位、熱門城市功能),ListView的addHeaderView功能也可以隨意使用

6、提供2種懸浮提示View,常規(guī)居中 以及 MD風(fēng)格的右側(cè)氣泡

工作過程

1、初始化、綁定數(shù)據(jù)
用一個簡單的圖來表示吧(IndexBar就是右側(cè)的字母條)

IndexableStickyListView工作過程.png

2、搜索、過濾數(shù)據(jù)
對于搜索,首先我們要確保數(shù)據(jù)搜索過程是異步的,不然在數(shù)據(jù)比較多的情況下,肯定會掉幀卡頓的。

這部分我單獨寫了一篇簡書介紹:[Android]談?wù)劇八阉鳌保?種場景下的最優(yōu)解

最后

該庫還需要后續(xù)的維護和優(yōu)化,比如使用的pinyin4j.jar過大,效率也不高,下一步打算替換成更小的拼音轉(zhuǎn)化庫。
現(xiàn)在使用TinyPinyin庫替換了Pinyin4j.jar庫,體積減小108K,速度提升了4倍!

在使用中有任何問題,隨時可以聯(lián)系我。

最后再次放上源碼地址,點這里,點這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,769評論 25 709
  • 太長了,還是轉(zhuǎn)載吧...今天在看博客的時候,無意中發(fā)現(xiàn)了@Trinea在GitHub上的一個項目Android開源...
    龐哈哈哈12138閱讀 20,383評論 3 283
  • 簡書這樣的創(chuàng)作平臺,最大的特征是開放性和包容性,不管你年老年少、相貌俊丑、才華幾斗,隨時都可以進來。 這就跟股市一...
    東燕川閱讀 350評論 2 3
  • 每天早上醒來 時鐘已轉(zhuǎn)到九點 追劇 睡覺 吃飯 也不看書 不逛街 這種日子 過了一個多星期 是很爽 但很空虛
    Lmy銘瑤閱讀 215評論 0 0
  • docker中在提交鏡像的時候有時會需要提交鏡像的描述信息,當(dāng)我們尋找鏡像查看描述信息的時候先: 1 使用dock...
    SookieYang閱讀 272評論 0 0

友情鏈接更多精彩內(nèi)容