以文本方式查看主题

-  曙海教育集团论坛  (http://sun4.cn/bbs/index.asp)
--  Android应用开发  (http://sun4.cn/bbs/list.asp?boardid=45)
----  Android输入法开发实例解析  (http://sun4.cn/bbs/dispbbs.asp?boardid=45&id=2025)

--  作者:wangxinxin
--  发布时间:2010-12-3 11:16:44
--  Android输入法开发实例解析
这里我们建立表1为BiHua,同时构建两个字段,字段1为“input”来存放输入的,字段2为“value”为匹配出来的值,这里不难实现比如我们输入“111211”就可以匹配出两个这样笔画的字,分别是“彗”和“慧”,而1笔就可以输入好的字有“一不在有来大地到要可而于下过事”,这里我们可以把常用字优先排到前面。  2.五笔输入法
  这里我们建立表名为CN,这里常规的字、词组、五笔都可以使用同一张表,这样对应查找更方便些,平时使用王码的打字员输入“ep”可以匹配出“爱”字,输入“jqb”匹配出“昂”字。这里ep就是input字段,而昂就是value字段在表CN中,依次类推。
  3.英文输入法
这个就更简单了,把常用的单词表全部放入到数据库中,输入a自动匹配apple、arm这样的单词,类似autocomplete是把,其实就是包含关系的,这里找个词典直接导入即可。
4.联想输入法
  平时一个字一个字的输入老慢,同样我们不用很负责的算法,直接加入类似“zhongguo”对应“中国”这样的词组就OK了,经过Android123的初步测试SQLite数据库在Android上还是蛮快的,但是还是不推荐这样制作输入法,至少商用产品不能这样开发的。
5. 9宫格输入法
平时不用G1附带的QWERTY键盘打字时可以尝试下新的9宫格输入法,比如在传统手机键盘上,我们可以发现1键对应的是符号,2键上刻有 a b c这三个字母,而9键上刻有 w x y z 这个四个字母,正常不用遍历算法一样可以直接记录下按键顺序,比如输入“ding”这个拼音就是3464,而输入“chen”就是2436,最后再使用方法4中的直接查翻译过来就是中文字了,呵呵是不是很简单呢?
三、选字设计
  这里我们充分发挥Android平台的触摸优势,通过Gallery控件可以直接实现触摸滚动,每个字我们可以当作一个TextView对待,因为都是派生于View类我们直接使用listener来拦截按下事件,就达到了触摸选字,如果是QWERTY布局的话按键排列比较紧密,可以使用Android平台提供的View类的长按listener来获取长按事件,显示一个放大的按下按钮信息,这点可以参考iPhone手机的输入法。