他智能手机输入法界面设计-毕业论文_第1页
他智能手机输入法界面设计-毕业论文_第2页
他智能手机输入法界面设计-毕业论文_第3页
他智能手机输入法界面设计-毕业论文_第4页
他智能手机输入法界面设计-毕业论文_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

厦门大学毕业设计 他智能手机输入法界面设计摘要 北京根基科技公司在我们实习期间为我们提供了智能词典实习项目,本文主要叙述了我所负责的职能手机输入法界面设计。该项目将根据J2ME的标准,用JAVA语言来编写,同时加上根基科技在原来开发词典的技术基础上,希望在不久的将来,能真正给用户带来便利。本项目主要由六个同学来共同完成,现在主要是先实现智能输入法,我主要是负责输入法界面的设计。本文从软件工程的角度叙述了整个智能手机输入法界面设计的详细内容。从五个大类,每个类主要从程序描述、程序流程图、算法流程、UML图、测试计划、及尚未解决的问题这六个小点上来描述设计思路,并在文章末尾附上代码说明文件javaDoc来进一步描述具体代码所对应实现的功能。关键词 按键图片 键盘图片 键盘布局 输入法 按键响应Abstract The Basemicro company provide the project of intelligence dictionary during the period of our prictising.The project bases on the J2ME standard and will be coded in JAVA.Six students will acomplish the project together,and I am in charge of the interface design.The paper illustrates the detail of intelligence cellphone IME inteface design from the software engineering point of view.In the five section,the pape recountal the frame from the “the decription of the program”.”the flow picture of the program”.”the algorithmic flow”.”UML picture”.”the test plan”.”the unsolved problem”,and attach the javaDoc of the code to depict the function the code implements.Key word keystoke Image keyboard Image keyboard layout IME(input methord editor) keystoke response目录1.设计要求和开发环境42.设计概要43.程序详细设计53.1.myImage.java53.1.1.程序描述53.1.2.程序流程图53.1.3.算法和流程73.1.4.UML图83.1.5.测试计划83.1.6.尚未解决的问题83.2.myScreen.java83.2.1.程序描述83.2.2.程序流程图93.2.3.算法和流程103.2.4.UML图103.2.5.测试计划103.2.6.尚未解决的问题103.3.generateKB.java113.3.1.程序描述113.3.2.程序流程图113.3.3.算法流程133.3.4.UML图143.3.5.测试计划143.3.6.尚未解决的问题143.4.myContrller.java153.4.1.程序描述153.4.2.程序流程图153.4.3.算法流程163.4.4.UML图173.4.5.测试计划173.4.6.尚未解决的问题173.5.myCanvas.java173.5.1.程序描述183.5.2.程序流程图183.5.3.算法流程213.5.4.UML图213.5.5.测试计划223.5.6.尚未解决的问题224.结论225.致谢23附录24随着移动电话的普及,以及新一代人对移动电话上的功能的要求越来越高,中文输入法在手机软件中的作用越显重要。现在的中文输入法,年轻人能很好的使用,如时下最流行的T9输入法。但是现在的输入法仍存在许多问题,不能满足所有人的需要,比如对于中老年人来说,现在的输入法要求太高,他们的拇指已经不能像年轻人一样如此灵活;还有现在输入法中显示的字对他们来说太小了;而且现在的输入法,没有考虑到以后手机的发展,比如触摸式屏幕的出现等等。所以我们现在就考虑开发新一代的输入法,放眼未来手机的发展趋势,给更多的人带来便利!1. 设计要求和开发环境尽量避免让用户来思考,只提供给用户选择尽量让用户只使用“上”“下”“左”“右”键,而不是通过t9键盘来选择提供一些快捷的组合键,避免不必要的切换开发语言:J2MEJDK:wtk2.0(SUN),NOKIA s60(交替测试)开发平台:Jbuiler9.02. 设计概要原先思路是想利用J2ME高层的API,但是发现高层的API无法满足设计需要。只能通过低层的画布类canvas来,将需要的东西画出来,包括键盘,信息栏等等。由于接触J2ME不久,可能会遇到一些问题,但是没关系,将接口留下来,等以后有思路或者找到解决的方法后再重新实现这些接口。程序1:myImage.java 产生一张字母按键所对应的Image程序2:myScreen.java 产生一张键盘所对应的Image程序3:myLayout.java 留下接口,以供以后产生新的布局方式程序4:generateKB.java 将一个String转化为一个键盘的合理String(现在使用的布局方式)程序5:myConroller.java 当所有的字无法在一个软件盘上显示出来时,用来控制翻页程序6:myCanvas.java 将所有的画布上的内容画出来,同时对用户的控制进行判断,进行相应的改变。程序7:test.java 生成一个测试用的MIDlet3. 程序详细设计3.1. myImage.java3.1.1. 程序描述myImage.java 产生一张字母按键所对应的Image,或者特殊标志的对应image,如(上下箭头,中英标志),此程序并非常驻内存,每次都只是对同一个对象重新实例化,以达到节约内存的目的。3.1.2. 程序流程图通过构造函数输入(图片大小,内容,字体,是否被选中)调用myImage.draw();返回一张按键对应的image通过构造函数输入(是否有上下页)调用myImage.drawMark();返回一张有上下箭头对应的image通过构造函数输入(键盘类型(int)调用myImage.drawTag();返回一张显示当前输入法状态对应的image3.1.3. 算法和流程l 画按键图片由字体判断出输入的String在屏幕上所需要长度,再加上空白区空间,算出正中位置,然后在正中央画出按键上的内容,再在图片区往内一格的四周画出边框(防止相邻的图片将边框覆盖掉)。当画未选中的按键图片时,用黑色画字,白色画空白区当画选中的按键图片时,用黑色画空白区,白色画字New myImage(String str,int aa,int bb,boolean selected,Font font)然后调用draw()得到对应的图片l 画中英标志算法同画图片New myImage(int type,int aa,int bb)然后调用drawTag()得到对应的图片。l 画上下箭头根据图片所占空间大小,在X方向画出上下标志New myImage(boolean up,boolean down)然后调用drawMark()得到对应的图片。3.1.4. UML图3.1.5. 测试计划l 单独在屏幕的任意位置画出任意的小按键3.1.6. 尚未解决的问题l 按钮按下去时,所应显示的状态,以产生按下闪烁的效果3.2. myScreen.java3.2.1. 程序描述myScreen.java 产生一张键盘所对应的Image,每一张按键图片通过myImage生成。按键排列时,每一行都居中对齐。3.2.2. 程序流程图返回一张键盘对应的image,其中m,n位置上的按钮应为选中样式输入用户所选择的按键位置,默认下为正中央那个。调用myScreen.myDraw(intm, intn) 3.2.3. 算法和流程当用户在同一个软键盘上通过操作杆移动选择按键时,只要用户所移动后的位置上有内容的话且合理,就改变已选中按钮的位置,重新画键盘 l 每行的正中间一个按键图片都画在键盘图片的正中央X=键盘图片宽度一半 按键图片一半Y+=每行高度l 每一行的其他按键图片都画在距该行正中的相应位置X=此按键图片据正中央的相应距离(要是无法与中间对齐,就向上对齐)Y+=每行高度3.2.4. UML图3.2.5. 测试计划l 在确定键盘内容的前提下,在任意位置画出软键盘l 在确定键盘位置的前提下,在画出包含任意内容的软键盘3.2.6. 尚未解决的问题摆放位置的进一步合理设计3.3. generateKB.java3.3.1. 程序描述generateKB.java 将一个String转化为一个键盘的合理String,同时实现了myLayout.java的接口,并调用了这些接口方法生成一个合理的键盘布局。 生成String 的字符摆放布局,供以后使用 3.3.2. 程序流程图 当构造函数使用的参数是String 时 构造器自动调用generateKB.priorityLayout当构造函数使用的参数是int type 时 构造器自动调用generateKB.matrixLayout 生成String 的字符摆放布局,供以后使用3.3.3. 算法流程当用户初始每次键盘画面时,即通过此类生成对应按键摆放位置,当系统发现应该改变新的布局或者画面时,也调用此类生成新的摆放位置。此类有两种构造函数一种是给除中文以外的软键盘(大英,小英,标点)然后调用matrixLayout,另一种是给中文的软件盘,调用相应的priorityLayout,生成对应的二维软键盘String布局l matrixLayout:根据String的长度,算出这个正方形键盘的边长,如26个字母将生成有36个按键的键盘,只不过显示的时候空键不显示l priorityLayout:因为从后台取来的数据,尤其是中文是根据出现频率来出现在数组的前后。因此将第一个摆在正中央,即默认选中位置,接下来应摆在用户只需移动一次就可以取到的位置,依次类推。算法:由两个int(up,down)值来表示现在已经摆到的上下界,每次循环从up到down,在这些行的前后放入值(放入之前应先判断是否超过数组范围,和键盘图片范围)如果还有再放入up和down行的正中央。3.3.4. UML图3.3.5. 测试计划l 主要测试中文布局方式,任意输入String,然后直接打印出来!3.3.6. 尚未解决的问题l 新的布局方式的开发3.4. myContrller.java3.4.1. 程序描述l myConroller.java 当所有的字无法在一个软件盘上显示出来时,用来控制翻页。需设置最多可显示的页数。3.4.2. 程序流程图系统得到String,和偏移量,然后显示String中该偏移量以后字符当用户移动到最上一行,且还有上一页时,取上一页相应的偏移量,重新构造这个软键盘当用户移动到最下一行,且还有下一页时,取下一页相应的偏移量,重新构造这个软键盘3.4.3. 算法流程当用户移动到当前页的最后一行时,如果String未显示完,则从已显示的位置向后,将接下来的String排入新的软键盘中。当用户移动到当前页的最上面一行时,若之前有显示过其他页,即将他们重新显示出来。当系统从后台得到新的String时,系统即为这个String提供新的控制器,这个控制器初始化时,设置可最多可显示页数,此设置为pages=5,初始化 int page以保存每一页的偏移量,同时将当前页nowPage=0,page0=0。当显示第一页时,将String中已排入键盘的末尾位置放入pagenowpage,同时nowPage+,当用户移动最下方时,判断当前String中的偏移量是否小于数组的长度,若小于就表示还有可以显示下一页,在将下一页的偏移量放入int中。当用户向上移的时候,则从int中提取nowPage-1的对应偏移量,进行相应的判断,在决定是否显示上一页。3.4.4. UML图3.4.5. 测试计划l 进行任意的翻页显示。3.4.6. 尚未解决的问题无特别说明3.5. myCanvas.java3.5.1. 程序描述myCanvas.java 将所有的画布上的内容画出来,同时对用户的控制进行判断,进行相应的改变。3.5.2. 程序流程图用户操作前状态操作后状态判断状态是否合理不合理合理若移动后的状态仍在同一个键盘下,就只改变选中键的位置重画键盘。若超出上下范围,则判断是否还有上下页,重画键盘。上下左右操作进行输入法的切换。功能键操作用户操作 3.5.3. 算法流程首先初始化画面,根据传入的参数构造键盘和控制器。当系统产生新的联想字时,调用changeContrller的方法构造新的键盘和控制器。当用户进行键盘操作时,低层API自动检测,调用keyPressed(int key),根据key的值来判断,进行相应的操作包括移动所选字和repaint()。此类的算法难度主要集中在对keyPressed中传入的key值判断后,该如何操作。程序中有全局变量X,Y来表示所选中的字的逻辑位置。当用户上下左右操作判断前,先将X,Y的保存下来,当用户上(y-)下(y+)左(x-)右(x+)移动后,判断所移动的位置是否合理,如果合理就移动或者翻页,如果不合理就将xy原来的值,还原回去。当用户选择的了#键后,就进行键盘的切换。设置变量int type,用户切换时,type=type%3(因为只有小英、大英、标点、中文4种输入法),然后根据type值再重新new键盘和controller。3.5.4. UML图3.5.5. 测试计划l 在多页情况下,输出测试移动键时,XY的值变化和判断结果。3.5.6. 尚未解决的问题无特殊说明。4. 结论这一次毕业设计到现在,我已基本完成了对智能手机输入法界面部分的设计,基本实现了各项功能,总体上设计有一个比较清晰的层次感。从面向对象的角度来说,各个类的定制显示了较好的继承关系。同时为以后实现更强大的功能留下了接口,具有较强的伸缩性。但是还存在一些有待进一步完善的地方,会在以后的改进中慢慢完善。5. 致谢首先要感谢我的毕业论文指导老师姚俊峰对我的论文的修改提出了宝贵的意见,还要感谢吴仲卿老师为我们提供实习和做设计的机会,并给我们提供了较好的学习和工作环境。这些对我的论文思路的形成和材料的收集都起到了至关重要的作用。在此,向所有对该论文提供过帮助的人表示感谢。参考文献1.作者:Harvey M. Deitel, Paul J. Deitel.书名:Java How to ProgramM.出版地:美国.出版社:Prentice Hall Professional Technical Reference.出版年:2002年12月.2.作者:微型爪哇人.书名:Java手机程序开发M.出版地:北京.出版社:中国铁道出版社.出版年:2003年4月.3.作者:James Keogh.书名:J2ME开发大全.出版地:北京.出版社:清华大学出版社.出版年:2004年2月.4.作者:施铮等.书名:J2ME技术参考手册S.出版地:北京.出版社:电子工业出版社.出版年:2004年1月.5.作者:Yu Feng,Jun Zhu.书名:J2ME程序设计M.出版地:北京.出版社:中国电力出版社.出版年:2003年1月.6.作者:Leopold Lee.书名:J2ME手机编程基础 M.出版地:北就.出版社:清华大学出版社.出版年:2003年7月.7.作者:卢军.书名:J2ME 应用程序开发:手机、PDA程序开发捷径 M.出版地:北京.出版社:中国铁道出版社.出版年:2002年9月.8.作者:张小玮.书名:J2ME无线平台应用开发M.出版地:北京.出版社:清华大学出版社.出版年:2004年4月.9.作者:黄聪明.书名:Java移动通信程序设计:J2ME MIDP M.出版地:北京.出版社:清华大学出版社.出版年:2002年6月.10.作者:Bruce Eckel.书名:Thinking in Java, Second EditionM.出版地:北京.出版社:机械工业出版社.出版年:2002年9月.11.作者:阎宏.书名:JAVA与模式M.出版地:北京.出版社:电子工业出版社.出版年:2002年10月.12.作者:Ian Sommerville.书名:Software Engineering 6th Edition M.出版地:北京.出版社:机械工业出版社.出版年:2003年1月.13.作者:郑人杰 殷人昆.书名:软件工程概论 M.出版地:北京.出版社:清华大学出版社.出版年:2001年1月.14.作者:Edward Yourdon & Carl Argila.书名:实用面向对象软件工程教程 M.出版地:北京.出版社:电子工业出版社.出版年:2000年10月.15.作者:Stephen R.Schach.书名:软件工程Java语言实现.出版地:北京.出版社:机械工业出版社.出版年:1999年9月.16.作者:王森.书名:Java手机程式设计入门M.出版地:北京.出版社:中国铁道出版社.出版年:2001年8月.附录myproject Class myImagepublic class myImage Title: myImageDescription: 生成一张对应的图片,包括键盘按钮,中英标志,上下标志Copyright: 杨思佳Company: sydneyVersion: 1.0 Author: 杨思佳 Constructor Detail myImagepublic myImage(java.lang.Stringstr, intaa, intbb, booleanselected, javax.microedition.lcdui.Fontfont)Parameters: str - String:键盘按钮中显示的文字 aa - int:按钮的长度 bb - int:按钮的高度 selected - boolean:按钮是否处于被选中的状态 font - Font:所使用的字体 myImagepublic myImage(booleanup, booleandown)Parameters: up - boolean:是否画上一页这个标志 down - boolean:是否画下一页这个标志 myImagepublic myImage(inttype, intaa, intbb)Parameters: type - int:要画的标志是:0小英;1大英;2中文;3标点 aa - int:图片的长度 bb - int:图片的高度 Method Detail drawpublic javax.microedition.lcdui.Image draw()Returns: Image:返回按钮对应的图片 drawUnSelectedpublic void drawUnSelected()画出图片,状态:被选中 drawSelectedpublic void drawSelected()画出图片,状态:未被选中 drawPressedpublic void drawPressed()画出图片,状态:被按下(但是还没有实现,算留下接口吧) drawTagpublic javax.microedition.lcdui.Image drawTag()Returns: Image:返回标志对应的图片 drawMarkpublic javax.microedition.lcdui.Image drawMark()Returns: Image:返回标点对应的图片 myproject Class myScreenpublic class myScreen Title: myScreenDescription: 生成整张键盘所对应的图片Copyright: 杨思佳Company: sydneyVersion: 1.0 Author: 杨思佳 Constructor Detail myScreenpublic myScreen(java.lang.Stringmatrix, intwidth, intheight, javax.microedition.lcdui.Fontfont, inttype)Parameters: matrix - String:键盘上所对应的二维字母表 width - int:整张图片的长度 height - int:整张图片的宽度 font - Font:键盘上所使用的字体 type - int:区分这是英文键盘还是中文键盘 Method Detail myDrawpublic void myDraw(intm, intn)画图的原则是所有键的位置与中间的对齐 Parameters: m - int:这张键盘上哪一个按键是被选中的,X坐标 n - int:这张键盘上哪一个按键是被选中的,Y坐标 myproject Class generateKBpublic class generateKB implements myproject.myLayout Title: generateKBDescription: 实现布局方式接口,并利用这些布局方式将String-StringCopyright: 杨思佳Company: sydneyVersion: 1.0 Author: 杨思佳 Constructor Detail generateKBpublic generateKB(inttype)生成字母和标点键盘 Parameters: type - int:当是字母和标点键盘时,由于内容固定,因此根据type生成对应的键盘 generateKBpublic generateKB(java.lang.Stringss, intwidth, intheight, javax.microedition.lcdui.Fontfont, inttype, intblank, intkk)生成中文键盘 Parameters: ss - String: 由数据库中取得的String数组 width - int:键盘所占用的图片大小,长度 height - int:键盘所占用的图片大小,高度 type - int:键盘类型的区别 blank - int:留给每个按键除了内容以外的空白区大小 kk - int:String中的偏移量,摆String的时候从哪一个排起,供翻页使用 Method Detail MatrixLayoutpublic void MatrixLayout()实现相应的接口方法 SequenceLayoutpublic void SequenceLayout()实现相应的接口方法 PriorityLayoutpublic void PriorityLayout(intkk)实现相应的接口方法 myproject Class myControllerpublic class myController Title: myControllerDescription: 当所有的字无法在一个软件盘上显示出来时,用来控制翻页Copyright: 杨思佳Company: sydneyVersion: 1.0 Author: 杨思佳 Constructor Detail myControllerpublic myController(java.lang.Stringstr, intwe, inthe, javax.microedition.lcdui.Fontfont)当使用中文输入法时使用这个constructor Param

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论