Android拨号盘 支持T9搜索和号码搜索等拨号盘案例_安卓软件开发教程-查字典教程网
Android拨号盘 支持T9搜索和号码搜索等拨号盘案例
Android拨号盘 支持T9搜索和号码搜索等拨号盘案例
发布时间:2016-12-28 来源:查字典编辑
摘要:之前做通讯录软件,其中在做拨号盘的时候一直为怎么实现T9输入烦恼,上网找了很多帖子,都没有满意的答案。不过最后终于是实现了,看社区内好像也有...

之前做通讯录软件,其中在做拨号盘的时候一直为怎么实现T9输入烦恼,上网找了很多帖子,都没有满意的答案。

不过最后终于是实现了,看社区内好像也有不少朋友需要,在此分享一下。

这个是在我项目中提取出来的拨号盘案例,功能上完全实现了目前其他通讯录中拨号盘的功能,但在加载效率上还有不足,请各位大侠指教。

有图有真相:

目前我用1g单核cpu的索爱mt15i的测试机,1500多的联系人,加载时间大概在8秒左右,当然,一般用户不会有这么多联系人的。

由于我做的程序不是在一开始的界面就是拨号盘,所以我在程序已开始就在后台异步加载联系人,

等到拨号盘的界面,联系人加载也差不多完成了。

不过我觉得每次在程序开始都读取联系人的数据,把他们整理成t9搜索需要的数据有些慢,

最好还是自己建张表来存放,然后监听联系人表的变化动态更新t9数据。

如果大家有更好更快的想法,希望能分享一下!

部分代码:

复制代码 代码如下:

public class ToPinYin {

/**

* 将传递的汉字list转换成拼音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;

}

/**

* 将中文转换成拼音

* @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());

// 当转换不是中文字符时,返回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);// 大写

format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 没有音调数字

format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);// u显示

return format;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新安卓软件开发学习
    热门安卓软件开发学习
    编程开发子分类