做j2me应用也快1年了, midp提供的那套高级ui实在让人很难受,早就想自己弄一套了, 查了一些开源项目,没有合我这个懒人口味的, 也间或看了一下包括wuhua和其他几个网友提供一些自行设计UI的文章, 总觉的有点复杂,不适合我这个懒人。

过完年闲着实在无事,慢慢磨蹭,自己搞了一套完事。

midp 2的高级ui我感觉主要有这些问题。
1. 界面丑陋, 不能进行各式字体和背景色的设置, 不利于创建统一的界面风格。
2. Command和choicegroup在不同平台上实现差异巨大, 每个平台都要调试,写不同的用户手册,很烦,而且command不支持二级菜单。
3. layout基本无用, 原因也是各个手机平台的差异,特别是wm上,不同虚拟机实现差异巨大。
我们做企业应用,是因为跨平台的需要而选择kjava的,但是因为上面的因素,往往导致做出来的东西,界面和wm 上有c#或c++做的东西差异巨大,引起客户的强烈不满。而且某些复杂的展现,需要用canvas实现,风格也很难和高级ui保持一致(很难为了每个平台都专门做一套风格),很难和客户解释。而企业用户,一般都不怎么懂技术,对手机UI的观感直接影响到他们对整个应用的评价。

我基本的思路是做一套ui替换掉midp 2.0中的高级ui ,基本的目标如下。
1. 部件名词和基本方法应该保持和原来ui的一致,方便代码移植,比如Textfield 还是叫Textfield,基本参数也一致。
2. 对部件进行适当扩展和简化,方便开发,比如command, 被我拆分成2个部分,一个是左右command,另外一个是完整的菜单(可支持多级菜单),事件处理尽可能的符合传统桌面系统编写的习惯,而不是原来midp中的简化模型
3. layout方面进行简化, 我觉得手机界面,最有效的布局方式就是上下顺序布局,一行一个对象, 一行需要放多个对象的时候,可以使用分组的概念来进行简化,并可以简单设置对象的对齐模式。 特殊情况下也可以重载基类的布局,使用绝对定位的方法绘制元素。原来midp中设计的layout概念,因为不同手机的巨大差异,实际基本没有用处。
4. 统一在基类form里完成各种事件处理和调度,保证同时对触摸屏和键盘的支持,并对普通开发用户屏蔽这些操作。
5. 增加一些常用,但是midp里面没有的控件,简化开发工作量,比如对话框,提示框,进度条,电子表格,文档浏览等等。
这样完成以后的UI对开发者的开发难度要低于直接使用用高级ui进行开发,代码量也有显著减少,而且大幅度节约了调试和移植的时间。 缺点当然是内存消耗增加,不过对于企业应用一般都可以使用中高档手机,所以问题也不大。
另外为了方便对不同用户定制风格,进行了修改,实现了skin的方式,可以使用图片来设计主题。
 
 UI的风格是以模仿win ce为核心的, 分为标题, 工作区域, 菜单条区域三个部分。父类form负责处理各种事件,子类需要的时候可以重载工作区域,实现自己的特定风格显示。 

结合代码和截图简单做一下介绍

首先,实现一个基本的登陆窗体



    相关新闻>>