使用J2ME的MVC2开源框架KBOX
文本Tag: J2ME
【IT168 技术】 kbox 是一个MVC2模型的J2ME开源框架,用于快速开发可扩展的J2ME MIDP应用程序。
其结构如图:
所有的可视组件都位于需要经由MIDlet来显示,而MIDlet上的所有事件,包括键盘事件,按钮事件提交到ActionController 上,ActionController跟据配置文件,将事件转发给相应的Action,Action将处理结果得到的可视组件(Displayable) 通过ActionForward返回MIDlet显示。
KBOX的使用非常简单, 以一个HELLO WORLD 为例:
创建一个MIDLET:
public
class TestMIDlet extends MIDlet{
…
protected void startApp() throws MIDletStateChangeException {
ActionController controller
=
ActionController.getInstance(
true
);
controller.registerViewer(this);
//
Register the MIDlet
MyKGameCanvas mgc
=
new
MyKGameCanvas(
"
MYGC
"
);
//
Create a GameCanvas
KCommand kc
=
new
KCommand(
"
TEST BUTTON
"
, Command.HELP,
1
,
"
MYCMD
"
,
null
);
mgc.addCommand(kc);
mgc.setCommandListener(controller);
Display.getDisplay(this).setCurrent(mgc);
}
…
}
创建一个Canvas:
public
class MyKGameCanvas extends KGameCanvas{
public
MyKGameCanvas(
String
uniqueID) {
super(uniqueID);
}
public
void showString(
String
string
){
Graphics g
=
this.getGraphics();
g.setColor(0xFFFFFFFF);
g.fillRect(
0
,
0
, this.getWidth(), this.getHeight());
g.setColor(0xFF000000);
g.drawString(
string
,
0
,
0
, Graphics.TOP Graphics.LEFT);
this.flushGraphics();
}
}
创建相应的Action:
public
class TestAction implements Action{
public
void excute(KCommand cmd, Item item, Displayable dis, ActionForward forward,Hashtable parameters) {
MyKGameCanvas mkc
=
((MyKGameCanvas)dis);
mkc.showString(
"
hello world! From
"
+
mkc.getUniqueID()
+
"
.
"
+
cmd.getUniqueID());
}
}
将按钮事件注册给Action:
DEBUG
=
true
//
open the debug model of KBOX
CMD.MYCMD.ACTION
=
action.TestAction
注意这里的MyKGameCanvas 继承的KGameCanvas,而不是GameCanvas。KBOX的KGameCanvas类继承自GameCanvas,当并没有使用 GameCanvas那种使用线程监听状态的模型,而是重写了keypressed等方法来处理键盘事件。另外,KGameCanvas的重写的按钮事件 的处理已经实现了重复按键情况,而且可以指定重复按键的灵敏度,这点是非常好用的:)
KCommand是KBOX扩展的按钮组件。
KCommand kc = new KCommand( " TEST BUTTON " , Command.HELP, 1 , " MYCMD " , null );
第一个参数是按钮的名字,第二参数是按钮类型,第三个参数是优先级,第四个参数是ID名,用于配置文件的映射,对应“ CMD.MYCMD.ACTION=action.TestAction”中的MYCMD,第五个参数是可传递参数,是一个Hashtable类型,用于 向Action传递参数(当然你喜欢的话,也可以将参数提到配置文件里去……)。
KBOX的Action是一个只有execute方法的接口,任何类只要实现了该接口,都可以是一个Action。
注册一个键盘事件一样很简单:
public
class TestKeyAction implements Action{
public
void excute(KCommand cmd, Item item, Displayable dis, ActionForward forward,Hashtable parameters) {
MyKGameCanvas mkc
=
((MyKGameCanvas)dis);
…
Do
your business here.
..
}
}
指定键盘事件的处理Action
DEBUG
=
true
//
open the debug model of KBOX
CMD.MYCMD.ACTION
=
action.TestAction
KEY.MYGC.FIRE.ACTION
=
action.TestKeyAction…
KBOX的另外一个很实用的特性是DEBUG MODEL。
这个功能是用于在真机测试时,调试BUG用的。由于真机与模拟器不一定相同,当真机上抛出异常(真机上的异常无法察觉,没有控制台啊!),而模拟器又一 切正常的时候,这个功能就有用了:KBOX将捕获到的异常的用一个ERROR PAGE显示出来。不过注意在发布JAR包时,记得要去掉这个DEBUG模式,否则没事按到个没定义的键盘按键都会捕获到未定义按键处理的异常……
要打开DEBUG模式需要在配置文件上指定DEBUG=true。
源代码见附件
先贴上操作画面。其中最后一个条目是下列三者中其一。
<string name="record_tips_next">下载另外20条</string> <string name="record_tips_eof">资料下载完毕</string> <string name="record_tips_none">暂无新闻</string>
完成分页需要作如下:
- 设计ViewHolder, Adapter
- 异步从Server获取数据(using AsyncTask)
- 更新Adapter
private void updateAdapter() { if(!_newsList.isEmpty()) { _newsList.clear(); } long id = START_ID + _newsList.size(); for(int index = 0, listSize = _newsTitleList == null? 0 : _newsTitleList.length; index < listSize; index++) { id += index; CommonViewHolder viewHolder = new CommonViewHolder(); viewHolder.id = id; viewHolder.text = new TextView(this); viewHolder.text.setText(_newsTitleList[index]); viewHolder.sign = new ImageView(this); _newsList.add(viewHolder); } if(_listView.getAdapter() == null || _listView.getAdapter() .getCount() < 1) { _newsAdapter = new CommonListItemAdapter( LayoutInflater.from(this) , _newsList); _listView.setAdapter(_newsAdapter); } else { _newsAdapter.notifyDataSetChanged(); } _listView.setOnItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(position != -1) { new FetchNewsCategoryContent().execute(_newsIdList[position], _newsTitleList[position]); } } }); }
百度输入法
简介
百度为不同平台提供了输入法工具,其中包括windows平台的拼音输入法、日语输入法,手机平台的手机输入法,以及在线输入法,旨在加强用户体验。
编辑本段
PC输入法
PC输入法有拼音输入法、日语输入法两个版本。
拼音输入法
百度输入法是由著名搜索引擎服务提供商百度公司免费提供的输入软件,用于win平台的汉字拼音输入。基于百度搜索技术,拥有强大的词库。目前内测中。
输入法帮助
1.输入法界面介绍[1]
状态条:
状态条上的图标从左到右分别代表“输入状态”、“全角/半角符号”、“中文/英文标点”、“设置菜单”。
输入窗口:
上排是用户输入的拼音,下排是候选字词,输入所需的候选字词对应的数字,即可输入该词。第一个词默认显示为红色,敲下空格即可输入上屏。
2.如何切换出百度输入法?
在需要输入的地方,点击鼠标进入输入状态,使用“Ctrl+Shift”键切换输入法,直至选定百度输入法。也可直接用鼠标通过“语言栏”选择百度输入法。当系统仅有一个输入法,或默认输入法即为百度输入法时,只需按下“Ctrl+空格键”即可切换出百度输入法。
3.如何在百度输入法中翻页选字?
百度输入法使用“逗号(,)句号(。)”为默认翻页键。在输入拼音后,按下句号(。)开始向下翻页选字,功能与PageDown键相同。找到所需要的字后,按其相对应的数字键即可输入上屏;百度输入法支持的翻页键还包括“减号(-)等号(=)”、 “左右方括号(【】)”等,以满足不同输入选字习惯的需求。此外,用户也可以直接鼠标点击输入框右下角的小箭头按钮进行翻页。
4.百度输入法支持哪些输入模式?
百度输入法目前支持全拼、简拼和中英文混拼三种模式:
全拼输入是拼音输入法最基本的输入模式。在全拼模式下,输入词条的完整拼音即可得到相应的候选字词,如需输入“百度”时,输入“baidu”即可得到候选词“百度”。
简拼是通过输入声母或声母的首字母来进行输入的一种模式。在简拼模式下,百度输入法支持通过声母简拼及声母的首字母简拼输入。如需输入“输入法”时,可通过输入“shrf”或“srf”得到候选词“输入法”。
百度输入法同时还支持简拼全拼的混合输入。仍以“输入法”为例,输入“srf”、 “sruf”、“shrfa”都可以得到候选“输入法”。中英文混拼模式是百度输入法的独特功能。在此模式下,用户在中文状态下输入包含英文片段的词条,无需切换至英文输入状态即可直接输入。如需输入“哆啦A梦”时,可直接通过输入“duolaameng”得到候选。
5.如何进行中英文切换?
百度输入法默认以“Shift”键供用户切换中英文输入状态:即按下“Shift”切换到英文状态,再按一下切回中文状态。用鼠标点击状态栏上的“中”“英”图标也可以进行切换。此外,百度输入法支持回车输入英文功能:即在中文状态下,输入英文后按下回车键,英文便可直接上屏。
6.如何手动构词?
百度输入法为用户提供“智能组词”功能,根据输入的拼音串自动组词以供候选。但假如自动给出的候选并非用户当下所需,可以通过手动回退修改。以人名“周一南”为例,输入“zhouyinan”后,发现“男”字并非所需的候选,按下“←”(向左键),光标可直接回退到“nan”音节前,选定“周一”部分,此时再选择“南”,即可得到需要的人名“周一南”。手动构词功能在输入人名及较长整句时更常使用。
7.如何将词条固定在首位或删除错误词条?
在输入中,假如发现候选的词条中有错词,用户可以随时进行删除修改。如输入拼音 “yikeli”后得到“易克力”等词条,此时需要固定“易克力”在首位或删除这个词条,可将光标停在“1.易克力”上,此时可看到浮出下拉菜单中的“固定首位”和“删除词条”选项,直接鼠标点击即可完成相应操作。
8.如何使用百度输入法进行搜索?
在输入过程中,只需鼠标点击输入框右上角的熊掌图表,输入法直接为用户跳转百度搜索页面,搜索已输入的词条。
相关新闻
[2]据消息人士透漏,号称“更懂中文输入”的百度输入法即将发布,8月27日百度公司在员工中已经开始了内部测试。该人士称,百度中文输入法使用了与日文输入法基本相同的UI。其主要致力于使用户拥有随心所欲的高智能输入体验,而百度输入法“更懂中文输入”的基础则是搜索技术的强大词库。
9月6日部分普通用户已经拿到了内测版本的安装包。内测版本没用户限制,可以直接使用。
图为百度输入法安装包的属性信息。
百度中文输入法有云输入功能,在第二个候选项显示云输入结果。
云输入响应速度很快,基本没有任何延迟。
百度输入法提供了官网链接[3]但是点击显示403错误
下图为百度输入法的输入效果图
日语输入法
[4]
百度日语输入法(Baidu Type)是百度日本在09年12月推出的一款免费日语输入法软件。日语汉字词库数目基本与MS IME类似,但远远小于Google日本语入力的词库。它没有MS IME汉字查询等多种功能,其符号数量小于MS IME,其表情输入与MS IME表情输入模式相当。它在名人,流行词汇,口语音便等输入上略优于MS IME。
输入法特点
1、存储域网络,可转换话题关键字
2、文字与表情符号类型,转换表达
3、潜在能见度转换,预测学习功能
4、输入法光标皮肤色可以自由替换
5、百度日语输入法从菜单栏刷图标
编辑本段
手机输入法
[5]
百度手机输入法是一款功能强大的智能手机输入法,支持全拼、简拼、笔划、双拼、模糊音等多种输入方式,并且还采用了“点划结合”专利技术。百度手机输入法还拥有强大的DIY能力,外观、操作习惯、词库等都能自定义,用户可定制属于自己的输入法。此外,网络功能强大,支持用户词库在线备份、在线更新新词热词等。
支持平台
Symbian s60 2nd/3rd/5th
windows mobile PPC 5.0/6.0/6.1/6.5
blackberry os
Android 1.5/1.6/2.1/2.2
iPhone ios3.X/ios4.X
特色功能
精准词库
基于百度搜索技术的强大词库,支持在线更新、通讯薄导入、字词频扩展、备份与恢复功能。
综合效率高
百度手机输入法支持全拼、简拼、笔划、双拼、模糊音等多种输入方式。同时我们也充分考虑了用户在PC上的输入习惯,合理设计交互界面,用户可自然过渡,无须重新学习。百度手机输入法拥有点划结合专利技术,1按键区域+4方向=5种输入,配合创新人机界面,完美解决触摸屏设备单手快速输入问题。
并可以在不切换的情况下,直接输入中文、英文、符号和数字等。不仅给你极佳的单手输入体验,同时带来极高的输入效率。配合百度强大而精准的词库,极大提升了输入效率。
快速搜索
百度手机输入法内置了手机桌面搜索框,将上网搜索步骤减少至最少。一键直达,百度一下!以前要搜索一个信息,需要至少9个步骤:找到浏览器——打开浏览器——输入“百度域名”——打开页面——移动焦点到搜索框——按确定激活输入状态——输入关键词 ——移动焦点到搜索按钮——搜索 现在有了手机搜索框,只需要最简单的3个步骤:快捷键启动搜索框——输入关键词——搜索
个性化十足
百度手机输入法可以变换各种靓丽的皮肤,让乏味的输入过程也变得赏心悦目。
值得说明的是,换肤能力不是简单美化界面,更具有强大的扩展功能,支持自定义码表、按键和界面布局等,可定制丰富的个性化DIY输入方式,自定义快捷键,实现不同的输入体验。
百度手机输入法还支持个人词库在线备份与恢复功能,你在更换手机时,不必重新积累词频排序与个人输入习惯设定。
有了如此强大的自定义能力,你完全可以为自己量身打造个人化的输入法。
百度收购点讯输入法
11月17日下午消息,据百度内部可靠消息证实,百度一个月前已低调收购点讯输入法,意在加强百度在手机输入方面的竞争力,目前尚不知道这笔交易的具体金额。对此消息,百度公关部不置可否。
今日上午据消息人士透露,百度手机输入法将与掌上百度同步发布。
这意味着百度将加速在无线领域的布局,新浪科技对此进行了深入的追踪。来自百度内部的可靠证实,百度的确已经收购了上海点讯网络技术有限公司,虽然目前尚不知道这笔交易的具体金额,但可以确定的是“此次收购在一个月之前已经完成”。
针对上述消息,百度公关部未予正面回应。而上海点讯公司的输入法部门员工在接受新浪科技连线时表示,目前内部员工对百度收购一事并不知情。
今年9月,百度网站招聘信息显示,正在面向社会招聘输入法软件工程师,业内人士曾猜测是百度将进军桌面输入法客户端领域前兆。
此前10月26日,有百度内部人士透露消息称,百度正在邀请全体员工参与无线新产品掌上百度的测试。据透露,掌上百度除整合百度搜索外,也将百度贴吧、知道社区产品整合进来。
值得注意的是,另一互联网巨头腾讯今年也已涉足手机输入法平台,并于已于S60等平台推出测试版的产品。而此前也有消息称,腾讯收购了A4手机输入法的团队。
编辑本段
在线输入法
百度在线输入法是百度推出的在线输入工具,分为拼音输入法和手写输入法。
拼音输入法
拼音输入法最大的特点是无需下载客户端,在线即可使用,它运用的是云计算技术,用户在电脑前输入拼音后,数据传输到后台的计算机处理中心,对应的汉字或词语甚至句子将通过互联网几乎实时的显现出来,由于云计算后台的处理能力比用户使用的电脑强大很多倍,所以这种模式的输入法准确率比较高。在线拼音输入法于2010年9月16日正式上线。
手写输入法
手写输入专为不熟悉拼音以及老人、残障人士等各种不方便使用键盘的用户,带来了上网娱乐、获取信息、学习知识的权利。以实用为出发点,百度手写输入功能为所有用户带来了更为便捷的搜索体验,将“简单可依赖”的百度特色诠释更加淋漓尽致。
拼音输入法使用帮助
1.在输入法下拉框中选择拼音后,既可以在对应的搜索框中使用在线拼音输入法。在IE和Firefox下,启用百度输入法后桌面输入法被屏蔽;在chrome等其他浏览器下,启用百度输入法后需要先关闭桌面输入法。 2.如果您登陆了百度账户,我们会记录您的输入选择,为您形成自己的个性化词典。 3.拼音输入法过程中,若点击句号键后紧接着输入字母,将进入网址输入模式。 4.用户可以使用“<”和 “>”键,或“+”“-”键,进行向前和向后翻页;用户也可以用鼠标左键点击◀▶进行向前和向后的翻页。 5.用户输入过程中可以使用引号健手动输入音节分隔符,输入法需要根据音节分隔符的位置返回不同的提示词,例如“xian”返回“线”, 而“xi’an”返回“西安”。 5.用户可以使用 enter健将输入法输入栏中的所有内容输出到网页输入框中。
手写输入法使用帮助
在搜索框右侧的输入法下拉框中选择手写,会弹出手写板。可以用按住鼠标左键拖动的方式在手写板中写字,每次限写一个字。从右侧选择确定您想输的字,我们还会自动反馈您常用的联想词。
常见问题解答
1.百度在线拼音输入法与其他桌面输入法有什么不同?
1)基于云计算和网页技术,无需下载、安装客户端。
2)不受平台限制,无论是windows、linux,还是mac操作系统下都可使用。
3)只要登录了百度账户,便能随时随地享受个人词典。
4)结合百度搜索与用户输入,词库动态更新,融入最新网络词汇。
2.为什么我选择“拼音”后,在搜索框输入时在线拼音输入法没有启动?
当选择“拼音”后,页面会加载与在线拼音输入法相关的文件并进行初始化,如果网速较慢,则会导致加载时间较长,在线拼音输入法不能立即启动,请稍等片刻便可使用。
3.开启百度在线拼音输入法后,想输入英文怎么办?
直接输入英文单词,然后按enter键完成输入。或者先关闭在线拼音输入法,再将桌面输入法调至英文输入状态。
4.意见该如何反馈?可在百度在线输入法贴吧中发帖反馈意见。
点击输入栏右上方的“反馈”链接可到达百度在线输入法吧。
5.如何自定义词组?
用户登录后便可以自定义词组。比如,用户想生成自己的名字“张叁”作为自定义词,可以先输入“zhangsan”然后依次选择“张”和“叁”,这时就会生成一个自定义词,下次再输入“zhangsan”时,就会出现“张叁”这个自定义词了。
6.百度在线输入法可以在所有的浏览器里面使用吗?
百度在线输入现在可以应用于所有主流浏览器上。但使用方法略有差异:IE与Firefox中启用在线拼音输入法后桌面输入法被屏蔽,在线拼音输入法可以直接使用;但在其他浏览器中启用百度在线输入法后需要先关闭桌面输入法,将输入法状态调至英文输入状态时才能使用百度在线拼音输入法。
参考资料
* 1
输入法帮助
http://www.baidu.com/search/shurufa_help.html
* 2
拼音输入法
http://ime.baidu.com/
* 3
百度中文输入法官网
http://ime.baidu.com/function.html
* 4
百度日语输入法
http://ime.baidu.jp
* 5
百度手机输入法
http://ishouji.baidu.com/input/
扩展阅读:
* 1
手机输入法下载网址:http://ishouji.baidu.com/input/index.html