免费获取
|
论文天下网
|
原创毕业论文
|
论文范文
|
论文下载
|
计算机论文
|
论文降重
|
毕业论文
|
外文翻译
|
免费论文
|
开题报告
|
心得体会
|
全站搜索
当前位置:
论文天下网
->
免费论文
->
计算机论文
移动终端汉语拼音输入法及本地搜索接口实现技术(四)
unsigned char i,j;
unsigned char cInputStrLength=strlen(strInput_mge_str);//输入拼音串长度//
cpmgePY_Mblen=0; //完全匹配组数
j=0; //j为匹配最大值
if(*strInput_mge_str=='\0')return(0); //如果输入空字符返回0//
cpHZ=&(mgePY_index2[0]); //查首字母索引//
cpHZedge=mgePY_index2+sizeof(mgePY_index2)/sizeof(mgeY_index2[0]);//指向了最后一个索引
// strInput_mgePY_str++; //指向拼音串第二个字母//
while(cpHZ < cpHZedge) //待查询记录条数
{
for(i=0;i<cInputStrLength;i++)
{
if(*(strInput_mge_str+i)!=*((*cpHZ).mge_T9+i)) //检查字符串匹配,就是看输入的数字字符是否和索引表中的数字一一相对应`
{
if (i+1 > j)
{
j=i+1; //j为匹配最大值
cpHZTemp=cpHZ;
}
break; //发现字母串不配,退出//
}
}
if((i==cInputStrLength) && (cpmgePY_Mblen<16)) //字母串全配,最多8组
{
cpmgePY_Mb[cpmgePY_Mblen]=cpHZ;
cpmgePY_Mblen++;
}
cpHZ++;
}
if(j!=cInputStrLength) //不完全匹配输出最多匹配的1组
cpmgePY_Mb[0]=cpHZTemp;
return (cpmgePY_Mblen); //输出完全匹配组数,0为无果而终//
}
4.2 输入法输入模块的设计
输入法用户输入模块主要包括状态窗口、编辑窗口和候选窗口。而一般状态窗口不用一个窗口来显示,而是用右上角的一个图标来显示当前的输入法状态。所以主要实现编辑窗口和候选窗口。输入法用户界面模块类结构主要有InputEdit类CutString类。InputEdit类和CutString类实现对用户界面的编辑和光标的移动,右侧滑竿光标索引超出屏幕文字行数每行文字的半段,填充区高度显示区域,显示文字的行数,可绘制区域最大高度可绘制区域最大宽度,文本编辑区域每行字数,拼音编辑区宽度输入类型,显示区域宽度,当前拼音对应的字符的输入框的高度显示,当前拼音对应字符的输入框宽度,输入框间隔输,入超时时间等等的处理。InputEdit类、CutString类的类图如图4-2所示:
图4-2 InputEdit类、CutString类的类图
本模块实现的核心代码包括InputEdit类中的InputEdit函数和CutString类中drawCutString函数,InputEdit函数主要实现对输入法用户界面的编辑。其核心代码如下:
public InputEdit() {
font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);
fontWidth = (byte)font.charWidth(CHAR);
fontHeight = fontWidth;//(byte)font.getHeight();
letterWidth = (byte)font.charWidth(LETTER);
curSpells = new StringBuffer();
selectedSpell = new StringBuffer();
inputedChars = new StringBuffer();
cutString = new CutString();
editFrameCell = 2;
editModeWidth = fontWidth + 16;
inputStatus = STATUS_SPELL;
init();
drawCutString函数主要实现光标的绘制,其核心代码如下:
public int drawCutString(Graphics graphic,String str,int x,int y,int width,int height,boolean isShowEditBG){
if(str != null){
if(str.hashCode() != oldHashcode){
initStatus();
oldCilpX = graphic.getClipX();
oldCilpY = graphic.getClipY();
oldCilpWidth = graphic.getClipWidth();
oldCilpHeight = graphic.getClipHeight();
oldFont = graphic.getFont();
maxCanvasWidth = width - 6;
maxCanvasHeight = height;
for(int i = 0;i < str.length();i++){
sb.append(str.charAt(i));
if(font.stringWidth(sb.toString()) > maxCanvasWidth - fontWidth){
textVector.addElement(sb.toString());
sb.delete(0, sb.length());
}else if(str.length() - 1 == i){
textVector.addElement(sb.toString());
}
}
rowCount = textVector.size();
if(oldStrLength != str.length()){
if(oldStrLength > str.length()){
decCursorIndex();
}else{
addCursorIndex();
}
oldStrLength = str.length();
}
isMoreThanCanvas();
oldHashcode = str.hashCode();
if(isMoreThanCanvas){
if(cursorH > (rowCount - maxRowCount - 1))
rightLineIndex = cursorH - (rowCount - maxRowCount - 1);
}
}
}
graphic.setFont(font);
graphic.setClip(x - 1, y -1, maxCanvasWidth + 9, maxCanvasHeight + 2);
drawEditBG(graphic, x, y, isShowEditBG);
int count = 0;
for(int i =0;i < textVector.size();i++){
graphic.drawString(textVector.elementAt(i).toString(), x,
首页
上一页
1
2
3
4
5
下一页
尾页
4
/5/5
相关论文
上一篇
:
网络多媒体资源管理信息系统的开发
下一篇
:
网上购物电子商务系统
推荐论文
本专业最新论文
Tags:
移动
终端
汉语拼音
输入法
本地
搜索
接口
实现
技术
【
返回顶部
】
相关栏目
自动化相关
计算机论文
工程管理论文
法律论文
医学论文
人力资源
电子专业
电气工程
英语论文
行政管理
电子商务
社科文学
教育论文
物流专业
金融专业
财务管理
会计专业
化学化工材料科学
电子通信
环境科学
经济类
机械模具类
报告,总结,申请书
其他专业论文