2015之.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android SDK sample 之 SoftKeyboard 原文地址:/ 在Android SDK( 我是2.1 )的Sample中,有一个SoftKeyboard的例子,这个应该是编写输入法的一个入口吧,下面我将尽心详细的解析。我也是初次接触输入法层面,所以遇到不懂的可能需要查阅详细的资料。 这个例子设计的非常的简单。按照它自己的解释是: 这是一个软键盘输入法的例子。代码追求的是完整性基础上的简单性,所以在一定程度上面它还不算是一个输入法(只有英文和数的输入以及一些标点)。它的密度是为你提供一个基本的开始编写IME for Android的例子,你可以再在其之上进行适当的扩展。 那么它的文件组织是: AndroidMainifest.xml 这个是每一个Android应用都会有的一个配置描述文件。具体的说明可以参见:AndroidManifest.xml 文件之详细解析。? 那么对应到这个IME应用程序中他的一个特点是,他把自己声明成了服务,而且绑定在了输入法之上。它的intent-filter是直接用的InputMethod接口,这也是所有的输入法的接口。 res 目录:这个是resource目录,即资源目录。重要的有values,这个包括strings.xml以及一些你的一些自定义的值类型的xml文件。这里面包括3个文件,一个就是strings.xml。在这里定义了该输入法的名字,词的分隔符(就是你输入过程中可能用来表示一个词输入完成的符号,比如空格,标点等等),还有3个是为了软键盘来定义的,具体是定义了软键盘上的确认键。这里在后面的代码中可以看到,他主要是根据输入框的信息,来设置EnterKey的图标或者标示。比如你在一个网址上面输入,他就会显示一个搜索的图标,而在编辑短信时,如果实在收信人写,那么EnterKey就是Next标签,用来直接跳到短信正文部分非常的方便。然后就是dimens.xml,这个是软键盘的尺寸信息,包括键高,候选词字体的高度,候选词垂直间隙。最后就是color.xml了。他定义了候选词的背景颜色,比如正常,推荐,背景和其他等颜色。另外的重要的目录就是layout了,顾名思义,就是布局配置文件。这里只有一个配置文件:input.xml,它定义的是输入视图的信息,包括id,放置在屏幕下面,水平最大填充,垂直包含子内容即可。最后一个非常重要的文件夹就是xml,将分别介绍之。 在这里面,最简单是method.xml。该文件提供的是为搜索管理提供的配置信息(这个很诡异,暂时不明白)。 然后是qwerty.xml。这个文件顾名思义就是全键盘的布局文件。这种键盘布局文件非常的简单,首选需要声明这是一个键盘布局,需要一个Keyboard标签,然后就是一些属性。keywidth是键宽,%形式的就是比例,比如这里的10%p就是每个键占10%,所以一排就是10个键。格式也很简单,就像是一个矩阵一样,一行一行的定义就行了。每一行的一列,需要定义这个键的codes和label,以及最左边和右边的键。有一个特别的就是这个文件的第二行,前面可以定义一个空隙,比如是占5%的位置,那么剩下的就只能安排九个键了,最后还会剩余5%在右边。键不只是可以定义label,而且可以用icon,比如shift键,而且可以定制特殊键的键宽。最后的一行我是没有怎么看懂的,因为它和这个Sample运行的时候的布局不一样,有待研究。后面的几个xml文件都是不同的键盘布局而已。 还有一些drawable的文件,里面放置的是图标文件。 好了,除了源代码之外的所有配置都搞清楚了,下一步就是阅读源代码了。 终于到了解读源文件的时间了。在src目录里面就是真个输入法的源文件了。最开始我看的源文件是openwnn的源文件,这个开源的输入法实在是太强大了,然后很多地方我都还没有搞明白,作为入门级的,还是看这个Sample比较的简单吧,虽然他的功能并没有达到一个输入法的真正的情况,但是它却是经历了一个开发输入法的完整流程。 这里面有4个文件: LatinKeyboard.java: 这个就是软键盘类了,直接继承了Keyboard类来实现一个输入拉丁文的键盘。它还定义了一个内部类,叫做LatinKey,它直接继承了Key,来定义一个单独的键,它唯一重载的函数是isInside(int x , int y ),用来判断一个坐标是否在该键内。它重载为判断该键是否是CANCEL键,如果是则把Y坐标减少10px,按照他的解释是用来还原这个可以关掉键盘的键的目标区域。 在LatinKeyboard中,重载了一个createKeyFromXml的函数,这是一个回调函数,他是键盘在描绘键的时候调用,它是从一个xml资源文件中载入一个键,并且放置在(x,y)

文档评论(0)

dlyaEkIaza + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档