編輯:Android開發教程
記得在我剛接觸Android的時候對系統聯系人中的特效很感興趣,它會根據手機中聯系人姓氏的首字母進 行分組,並在界面的最頂端始終顯示一個當前的分組。如下圖所示:
最讓我感興趣 的是,當後一個分組和前一個分組相碰時,會產生一個上頂的擠壓動畫。那個時候我思考了各種方法想去實 現這種特效,可是限於功夫不到家,都未能成功。如今兩年多過去了,自己也成長了很多,再回頭去想想這 個功能,突然發現已經有了思路,於是立刻記錄下來與大家分享。
首先講一下需要提前了解的知識點 ,這裡我們最需要用到的就是SectionIndexer,它能夠有效地幫助我們對分組進行控制。由於 SectionIndexer是一個接口,你可以自定義一個子類來實現SectionIndexer,不過自己再寫一個 SectionIndexer的實現太麻煩了,這裡我們直接使用Android提供好的實現AlphabetIndexer,用它來實現聯 系人分組功能已經足夠了。
AlphabetIndexer的構造函數需要傳入三個參數,第一個參數是cursor,第二 個參數是sortedColumnIndex整型,第三個參數是alphabet字符串。其中cursor就是把我們從數據庫中查出的 游標傳進去,sortedColumnIndex就是指明我們是使用哪一列進行排序的,而alphabet則是指定字母表排序規 則,比如:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"。有了AlphabetIndexer,我們就可以通過它的 getPositionForSection和getSectionForPosition方法,找出當前位置所在的分組,和當前分組所在的位置 ,從而實現類似於系統聯系人的分組導航和擠壓動畫效果,關於AlphabetIndexer更詳細的詳解,請參考官方 文檔。
那麼我們應該怎樣對聯系人進行排序呢?前面也提到過,有一個sortedColumnIndex參數,這個 sortedColumn到底在哪裡呢?我們來看一下系統聯系人的raw_contacts這張表 (/data/data/com.android.providers.contacts/databases/contacts2.db),這個表結構比較復雜,裡面有 二十多個列,其中有一列名叫sort_key,這就是我們要找的了!如下圖所示:
可以看到,這 一列非常人性化地幫我們記錄了漢字所對應的拼音,這樣我們就可以通過這一列的值輕松為聯系人進行排序 了。
本文將告訴你如何讓你的應用程序支持各種不同屏幕大小,主要通過以下幾種辦法:讓你的布局 能充分的自適應屏幕根據屏幕的配置來加載合適的UI布局確保正確的布局應用在正確的設備屏
先來看一段代碼:public static void main(String[] args) { new Timer().schedule(new TimerT
獲取網絡連接狀態隨著3G和Wifi的推廣,越來越多的Android應用程序需要調用網絡資源,檢測網 絡連接狀態也就成為網絡應用程序所必備的功能。Android平台提供了C
SimpleAdapter作為一個數據集,主要向ListView、GridView容器填充數據,總結了幾種填充方式,原理很簡單,直接看代碼 和效果圖1、 ListView