博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android拨号盘,支持T9搜索和号码搜索
阅读量:5319 次
发布时间:2019-06-14

本文共 2242 字,大约阅读时间需要 7 分钟。

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

不过最后终于是实现了,看社区内好像也有不少朋友需要,在此分享一下。
这个是在我项目中提取出来的拨号盘案例,功能上完全实现了目前其他通讯录中拨号盘的功能,但在加载效率上还有不足,请各位大侠指教。
有图有真相:

   

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

由于我做的程序不是在一开始的界面就是拨号盘,所以我在程序已开始就在后台异步加载联系人,
等到拨号盘的界面,联系人加载也差不多完成了。
不过我觉得每次在程序开始都读取联系人的数据,把他们整理成t9搜索需要的数据有些慢,
最好还是自己建张表来存放,然后监听联系人表的变化动态更新t9数据。
如果大家有更好更快的想法,希望能分享一下!

部分代码:

public class ToPinYin {        /**     * 将传递的汉字list转换成拼音List     * @param list     */    public static List
getPinyinList(List
list){ List
pinyinList = new ArrayList
(); for(Iterator
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; }

转载于:https://www.cnblogs.com/nuliniaoboke/archive/2012/12/11/2813042.html

你可能感兴趣的文章
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
如何改善下面的代码 领导说了很耗资源
查看>>
php中的isset和empty的用法区别
查看>>
Android ViewPager 动画效果
查看>>
把word文档中的所有图片导出
查看>>
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>