Android撥號(hào)盤(pán) 支持T9搜索和號(hào)碼搜索等撥號(hào)盤(pán)案例
之前做通訊錄軟件,其中在做撥號(hào)盤(pán)的時(shí)候一直為怎么實(shí)現(xiàn)T9輸入煩惱,上網(wǎng)找了很多帖子,都沒(méi)有滿意的答案。
不過(guò)最后終于是實(shí)現(xiàn)了,看社區(qū)內(nèi)好像也有不少朋友需要,在此分享一下。
這個(gè)是在我項(xiàng)目中提取出來(lái)的撥號(hào)盤(pán)案例,功能上完全實(shí)現(xiàn)了目前其他通訊錄中撥號(hào)盤(pán)的功能,但在加載效率上還有不足,請(qǐng)各位大俠指教。
有圖有真相:


目前我用1g單核cpu的索愛(ài)mt15i的測(cè)試機(jī),1500多的聯(lián)系人,加載時(shí)間大概在8秒左右,當(dāng)然,一般用戶不會(huì)有這么多聯(lián)系人的。
由于我做的程序不是在一開(kāi)始的界面就是撥號(hào)盤(pán),所以我在程序已開(kāi)始就在后臺(tái)異步加載聯(lián)系人,
等到撥號(hào)盤(pán)的界面,聯(lián)系人加載也差不多完成了。
不過(guò)我覺(jué)得每次在程序開(kāi)始都讀取聯(lián)系人的數(shù)據(jù),把他們整理成t9搜索需要的數(shù)據(jù)有些慢,
最好還是自己建張表來(lái)存放,然后監(jiān)聽(tīng)聯(lián)系人表的變化動(dòng)態(tài)更新t9數(shù)據(jù)。
如果大家有更好更快的想法,希望能分享一下!
部分代碼:
public class ToPinYin {
/**
* 將傳遞的漢字list轉(zhuǎn)換成拼音List
* @param list
*/
public static List<String> getPinyinList(List<String> list){
List<String> pinyinList = new ArrayList<String>();
for(Iterator<String> i=list.iterator(); i.hasNext();) {
String str = (String)i.next();
try {
String pinyin = getPinYin(str);
pinyinList.add(pinyin);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
}
return pinyinList;
}
/**
* 將中文轉(zhuǎn)換成拼音
* @param 拼音-漢字
* @return
*/
public static String getPinYin(String zhongwen)
throws BadHanyuPinyinOutputFormatCombination {
String zhongWenPinYin = "";
char[] chars = zhongwen.toCharArray();
for (int i = 0; i < chars.length; i++) {
String[] pinYin = PinyinHelper.toHanyuPinyinStringArray(chars[i], getDefaultOutputFormat());
// 當(dāng)轉(zhuǎn)換不是中文字符時(shí),返回null
if (pinYin != null) {
zhongWenPinYin += pinYin[0];
} else {
zhongWenPinYin += chars[i];
}
}
return zhongWenPinYin;
}
/**
* 輸出格式
*
* @return
*/
private static HanyuPinyinOutputFormat getDefaultOutputFormat() {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 大寫(xiě)
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 沒(méi)有音調(diào)數(shù)字
format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);// u顯示
return format;
}
- Android實(shí)現(xiàn)搜索功能并本地保存搜索歷史記錄
- Android SearchView搜索框組件的使用方法
- Android百度地圖實(shí)現(xiàn)搜索和定位及自定義圖標(biāo)繪制并點(diǎn)擊時(shí)彈出泡泡
- Android 百度地圖POI搜索功能實(shí)例代碼
- android實(shí)現(xiàn)讀取、搜索聯(lián)系人的代碼
- Android文本框搜索和清空效果實(shí)現(xiàn)代碼及簡(jiǎn)要概述
- Android搜索框通用版
- Android實(shí)現(xiàn)帶列表的地圖POI周邊搜索功能
- Android搜索框組件SearchView的基本使用方法
- Android實(shí)現(xiàn)搜索本地音樂(lè)的方法
相關(guān)文章
android實(shí)用工具類分享(獲取內(nèi)存/檢查網(wǎng)絡(luò)/屏幕高度/手機(jī)分辨率)
這篇文章主要介紹了android實(shí)用工具類,包括獲取內(nèi)存、檢查網(wǎng)絡(luò)、屏幕高度、手機(jī)分辨率、獲取版本號(hào)等功能,需要的朋友可以參考下2014-03-03
android 獲取視頻,圖片縮略圖的具體實(shí)現(xiàn)
android 獲取視頻,圖片縮略圖的具體實(shí)現(xiàn),需要的朋友可以參考一下2013-06-06
Android優(yōu)雅地處理按鈕重復(fù)點(diǎn)擊的幾種方法
這篇文章主要介紹了Android優(yōu)雅地處理按鈕重復(fù)點(diǎn)擊的幾種方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Filter過(guò)濾器和Listener監(jiān)聽(tīng)器詳解
這篇文章主要介紹了 Filter過(guò)濾器和Listener監(jiān)聽(tīng)器詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Java實(shí)現(xiàn)Andriod帶看括弧的計(jì)算器代碼
這篇文章主要介紹了Java實(shí)現(xiàn)Andriod帶看括弧的計(jì)算器代碼的相關(guān)資料,需要的朋友可以參考下2016-03-03
Flutter以兩種方式實(shí)現(xiàn)App主題切換的代碼
這篇文章主要介紹了Flutter以兩種方式實(shí)現(xiàn)App主題切換的代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Flutter 側(cè)滑欄及城市選擇UI的實(shí)現(xiàn)方法
這篇文章主要介紹了Flutter 側(cè)滑欄及城市選擇UI的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
Android應(yīng)用獲取設(shè)備序列號(hào)的方法
本篇文章主要介紹了Android應(yīng)用獲取設(shè)備序列號(hào)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06

