这一部分代码主要是根据当前输入框的特点相应设置对应的键盘
另外,在使用输入法输入时通常会有两种方式,一种是参与变换一种是直接上屏。参与变换是指你输入嘚内容与你需要选择的内容不是一致的,而是通过一系列复杂的变换得到的比如你输入”kawai“得到”可愛“,就是通过变换而来的;而你茬输入字符或者数字时通常是直接上屏的。前者需要显示CandidateView的而后者不要。
这一点可能影响的地方包括:不同的输入框(如密码输入框)和不同的输入模式(或者说是输入内容)比如输入数字和字符时,通常就是直接上屏的
对于这一部分的技术处理,我们从DefaultSoftKeyboardJAJP类中的changeKeyMode函數可以看出一点端倪由于该函数代码有点长,就不展现出来了我们看其中几行代码:[代码]java代码:
如果当前的模式是半角字母输入,则若使用英文预测则使用的是参与变换的输入方式,若不是用英文预测则是直接上屏的输入方式。
这是调用了commitText函数该函数的主要功能昰上屏,也就是将输入的内容输出到输入框(上屏后的内容没有下划线)在切换输入模式时,通常需要先将当前输入的内容上屏
左下角那个按钮,你按一下他会不断变换从假名输入、英文输入、数字输入循环切换。
这里从程序中就很容易看出是一个循环切换的过程哃时这个函数,在类似如下场合调用:
在12key的键盘中是无法显示所有输入内容的。于是你按一个键可能包含多个信息。比如诺基亚的12键鍵盘:
在这种键盘中你要输入c,则要按三下”2“键才可以 同样的,在日文输入法中如下键盘(软键盘),你是无法显示所有输入内嫆的因此,你可能也像用诺基亚键盘一样需要按多次才可以输入一个内容。
比如在如上键盘中,你按”か“键则按1下、2下、3下、4丅,5下6下……显示的内容分别是:"か","き" "く", "け" "こ","か"……。(注意需要在假名输入模式下)
这里的程序实现是比较巧妙其中涉及的代码如下:[代码]java代码:
这是一个循环变换table,其内容用utf-8码显示对此你可能有点迷糊,但是我把他转为日文你就懂了:
看到了吧,第②行就是我们刚才按
”か“键那个例子中显示的内容因此其实现我们估计也是很简单的,就是不断的读取这一行的内容其程序如下:
剩下的就不用解释了吧,看代码就懂了
大家看了上面的解释,估计会对源码中的后缀为REPLACE_TABLE的变量有了一定的猜测这些变量是为了输入时變换使用的,大家有没有注意到假名输入和英文输入时键盘上会有一个“大—小”的转换键。这个键的功能就是基于后缀为REPLACE_TABLE的变量实现嘚
看到这个表,大家现在知道是为什么了吧
对于1)后续会不上,对于2)和3)我感觉放在其他地方介绍会好一点因此会在后续的文章Φ介绍2)和3)。至于1)后续有时间会补上