无与伦比

android输入法(8)–好吧,该说说我的输入法了

纵观输入法的输入方式,基本就是如下三种类型:
1.触屏
2.全键盘
3.数字键盘

比如说一款手机,它的输入体系无非是上述三种类型的任意组合。或是触屏+数字键盘,或是触屏加全键盘,或是全触屏等等。其中只有是利用触屏来输入的,就必备显示于屏幕的软键盘,并且软键盘不需要焦点,只需要响应touch事件或click事件即可进行输入。

我现在遇到了以个棘手的问题,就是我即将做的输入法不属于以上三种。它只能依靠五项键和翻页键来输入,且不是触屏。想想吧,怎么输入?对了,貌似只能通过五项键来上下左右移动焦点,按center键来输入,用翻页键来切换输入模式。

仔细看了看android的输入法框架,果断的我有失望了,发现它的keyboard类就是为触屏而设计的,于是我转变思路,设法让keyboard能获得焦点,且能响应click事件。多次尝试后,我又放弃了,这个思路根本没能行得通。—-求高手指点

于是乎,我自己设计了一个键盘类:键盘中的每一个key是一个button,。源码中的keyboard是利用概念上的键盘布局,然后通过keyboarview类来对每一个键进行绘制。而我的keyboard完全是一个布局好的键盘,直接可以使用。

规格上说,每个key需要用图片,一张黑底白字,一张白底黑字,分别对应于有焦点和没有焦点的情况。好吧,我用selector。

我就照着上述内容做着做着,又出现新问题了,我没有办法把焦点给输入法界面!!!—-求高手指点。仔细想了想android自带输入法,貌似输入法是不会获得焦点。。。悲剧啊!

本来的想法是利用android自己的焦点控制和点击事件的处理,可没想到,onClick事件是能响应,可我却不能给它焦点。于是,上述想法破灭了。

还好的是,我还有最后的杀手锏。

我通过拦截按键,自己控制焦点,自己处理按键事件总该ok吧??于是我接下来要说的内容就是一款只有五项键不带触屏的终端上的输入法的开发,不一定适合所有终端,特别是触屏上的输入法请绕行。本人对android比较菜,欢迎高手指点。

依然需要注意的几个问题:
1.在调出输入法时,输入法需要拦截所有按键(上下左右center),便于焦点的控制。原因可以自己好好想想。
2.翻页键用于切换上面的拼音、abc、ABC、符号、语音、关闭。方向键来切换不同字母。所以需要两套焦点。
3.再次提醒一句,这个输入法不是触屏使用的输入法,请一定要把思维转换过来。每一个按键的输入,都需要经过先选择再确定的过程。

好吧,上图看看:

退出移动版