本文是openwnn源码解析的第5篇,主要是介绍openwnn日文输入法的自定义词库功能。
最近看到网上有转载我的文章,但没有注明出处。由于这是系列文章单单转载一两篇读者也不一定看得懂。因此在这里做一个标记,如果看到转载的同学,可以访问我的博客http://blog.csdn.net/xianming01。
用户自定义词库包含UserDictionaryToolsEdit.java,UserDictionaryToolsList.java,UserDictionaryToolsListFocus.java,UserDictionaryToolsListJAJP.java,UserDictionaryToolsEditJAJP.java,ClearLearnDictionaryDialogPreferenceJAJP.java,ClearUserDictionaryDialogPreferenceJAJP.java这些类。
用户可以进入输入法设置界面,其中关于自定义词库部分:
其中日语用户词典与英语用户词典实现起来是一样的。而“学习词典初始化”只是将用户的学习词典清空,也是比较简单的。
1、涉及的类
这里涉及5个类UserDictionaryToolsEdit.java,UserDictionaryToolsList.java,UserDictionaryToolsListFocus.java,UserDictionaryToolsListJAJP.java,UserDictionaryToolsEditJAJP.java.其中最关键的是UserDictionaryToolsEdit.java,UserDictionaryToolsList.java;而UserDictionaryToolsEditJAJP.java,UserDictionaryToolsListJAJP.java则分别继承前面两个类,其重载了几个方法,主要是为了做不同输入法的配置工作。
比如UserDictionaryToolsListJAJP类代码:
从这个代码我们可以看到,这个类只是做了一些适配性的工作,比较简单。
2、UserDictionaryToolsList.java
其界面类似如下:
点击其中的“add”按钮,则弹出如下添加对话框(实际上是个activity):
从上面的这两个界面我们可以看出,这个类有很大一部分代码是用来生成并处理menu的,这一部分代码就不介绍了。
我们以删除对话框中的删除词条功能来介绍一下这里面比较特别的地方:
这里程序的关键点,我加了中文注释,大家看看应该就明白了。
另外,程序中用到了一个小技巧,就是在一个row里面本来有两个TextView的,一个是Read(读音),一个是Candidate(候选词)。正常情况下,我们找到Read还需要去找Candidate。程序使用了UserDictionaryToolsListFocus这个类重定义了TextView。其目的是使得你找到了Read,就可以通过UserDictionaryToolsListFocus类的mPairView找到Candidate,反之亦然。
当然,又个问题差点漏了。大家看这一段事件处理程序:
这里,你如果在用输入法时,按模拟器的那个中间键(他的旁边是前后左右四个键),则会弹出菜单,跟按“menu”键效果是一样的。
3、UserDictionaryToolsEdit.java
这里实际上就是一个编辑框,技术实现上是比较简单的。
不管是添加词条还是修改词条,用的都是这个界面,因此它需要判断当前是添加还是编辑,如果是编辑,需要初始化数据。在onCreate函数中,有如下代码:
这个是根据action的类型来判断是添加还是编辑。
其他的代码都比较简单,应该看得懂。
4、清空词典
这里涉及到清空用户学习词典和用户自定义词典。
以清空用户学习词典为例子,这里是重定义了一个DialogPreference,用户选择确认了以后给OpenWnnJAJP发送一个事件。代码如下:
5、其他
这一部分代码比较简单,所以就做了个简单介绍。
另外,对于事件处理部分,特别是OpenWnnEvent部分没有介绍,等着后续吧。
分享到:
相关推荐
安卓(Android)系统本身的确没有原生的日文输入法,但是谷歌公司在安卓SDK中包含了日本omronsoft软件公司的开源输入法OpenWnn。OpenWnn是omronsoft公司的手机输入法iWnn IME的精简开源版本。OpenWnn在官方各个版本...
日文,中文,英文。...OpenWnn for Android is a IME(Input Method Editor) package which works on Android's IMF(Input Method Framework). This version contains Japanese, Chinese and English IME.
对其中c代码进行编译,因此利用此源码可以直接编译出可运行apk文件。
Android输入法框架源码,可以很快上手开发
OpenWnn可以编译运行的源码,学习安卓输入法开发的好素材。
OpenWnn安卓输入法完整源码,修复了网络上其他版本中BUG,导入ECLIPSE 就可以直接运行到安卓设备,如有任何意见建议请留言
前一段时间需要开发一个Android上的输入法,收集了一些源码,仅供参考
可能对研究输入法的朋友有些... OpenWnn for Android is a IME(Input Method Editor) package which works on Android's IMF(Input Method Framework). This version contains Japanese, Chinese and English IME.
其他 openwnn很多编译不通过,要么是.so文件没编译好,要么代码不支持。这个是能编译通过,部署成功的。so文件也有的
这是一款不错的开源输入法应用源码,该应用不但可以支持输入中文之外,还可以输入英文,日语的功能,而且还带有多种风格的输入法可以提供给用户切换等,功能非常强大,是一款非常难得的android输入法应用。...
Android9.0内日文输入法OpenWnn,源码,已编译验证过,主要修改64位机器,SO库放置位置,以及在9.0失效的api替换,可在9.0源码内直接替换。
可以运行的openwnn开源输入法代码,加入了从串口接收数据的功能
android 输入法 openwnn eclipse版本,希望可以帮助到输入法开发的初学者 openwnn是一个完整的输入法,大家都可以基于这个版本来自己修改,修改称自己想要的输入法
一款日本人开发的中文、英文、日文安卓输入法,底层是c语言,工程直接用Android studio导入(Import project(Gradle。。。)),可以直接编译生成apk。
安桌手机手写输入法.apk
一款Android手机上的输入法。含有中文输入法。
例如:Android键盘 Package Summary(包装总结) a. com.android.inputmethod.latin(来源网站) d. Restart(重启) b. (No Application Class)(无应用类型) c. (NO Label)(无标签) e. system(系统) f. process...
The OpenWnn engine class for English IME.