WEB开发网
开发学院手机开发Android 开发 Android SDK sample 之 SoftKeyboard 详解 阅读

Android SDK sample 之 SoftKeyboard 详解

 2010-03-17 16:16:00 来源:WEB开发网   
核心提示:终于到了解读源文件的时间了,在src目录里面就是真个输入法的源文件了,Android SDK sample 之 SoftKeyboard 详解,最开始我看的源文件是openwnn的源文件,这个开源的输入法实在是太强大了,定义一个xml格式的Keyboard的布局,然后吃继承一个Keyboard类,然后很多地方我都还没有

终于到了解读源文件的时间了。在src目录里面就是真个输入法的源文件了。最开始我看的源文件是openwnn的源文件,这个开源的输入法实在是太强大了,然后很多地方我都还没有搞明白,作为入门级的,还是看这个Sample比较的简单吧,虽然他的功能并没有达到一个输入法的真正的情况,但是它却是经历了一个开发输入法的完整流程。

这里面有4个文件:

LatinKeyboard.java:

这个就是软键盘类了,直接继承了 Keyboard类来实现一个输入拉丁文的键盘。它还定义了一个内部类,叫做LatinKey,它直接继承了Key,来定义一个单独的键,它唯一重载的函数是isInside(int x , int y ),用来判断一个坐标是否在该键内。它重载为判断该键是否是CANCEL键,如果是则把Y坐标减少10px,按照他的解释是用来还原这个可以关掉键盘的键的目标区域。

在LatinKeyboard中,重载了一个createKeyFromXml的函数,这是一个回调函数,他是键盘在描绘键的时候调用,它是从一个xml资源文件中载入一个键,并且放置在(x,y)坐标处。它还判断了该键是否是回车键,并保存起来。

这当中还定义了一个函数是:setImeOptions,它是根据编辑框的当前信息,来为这个键盘的回车键设置适当的标签。这个很好理解,就如前面我说过的一样,输入框的不同,会产生不同的回车键的label或者icon。在这个函数中,有一个技巧是用了一些imeOption的位信息,比如IME_MASK_ACTION等等。主要是查看的EditorInfo的Action信息,这里有:

IME_ACTION_GO:这个是go操作,它将用户带入到一个该输入框的目标的动作。那么确认键将不会有icon,但是有label:GO

IME_ACTION_NEXT:这个是是next操作,它将用户带入到该文本框的写一个输入框中。比如说编辑短消息的时候,内容就是收件人手机号码框的next文字域。它也只是一个NEXT label就行了。

IME_ACTION_SEARCH; 这个是search操作,它的默认动作就是搜索。比如在URL框中输入的时候,默认的就是search操作,它提供了一个像放大镜一样的icon。

IME- ACTION_SEND:这个是send操作,它的默认动作就是发送当前的内容。比如在短消息的内容框里面输入的时候,后面通常就是一个发送操作。它也是只提供一个Label:SEND

DEFAULT: 默认情况下表示文本框并没有什么特殊的要求,所以只需要设置return的icon即可。

至此,这个类就已经完毕了。很简单一句话,定义一个xml格式的Keyboard的布局,然后吃继承一个Keyboard类,即可。

1 2 3  下一页

Tags:Android SDK sample

编辑录入:coldstar [复制链接] [打 印]
赞助商链接