2008-4-22 10:23
powertoy
呵呵 ,自己实现的一套用于企业应用的Me UI lib
去年开始转向手机开发,主要做移动OA之类的企业应用, 对javame里面的一些高级UI甚为头疼,功能简陋,外形丑陋,不同手机差异巨大,基本不可用。这段时间参考CE的风格和MIDP 2.0里面的原来的东西, 自己实现一整套UI,并尽可能和原来的midp2的代码兼容,方便移植。
贴上图给大家秀秀, 过几天有空写个详细点说明文档, 代码就不能公布了,毕竟还要靠这个吃饭,呵呵。
讲讲大致内容和实现思路
1. 基本元件库
替换掉原来 form, stringItem,imageItem、textfield,choicegroup、 菜单,增加了checkbox和对话框。 并作了适当简化, 保证代码可移植的同时,也可以简化代码的开发工作量。
网上看到有网友作品未考虑到保持和原来代码的兼容,所有元素都需要子类自己画,移植性和子类开发工作量就差了一些。
[attach]522942[/attach]
form 分为title, workarea, commandbar 三个区域,子类可以覆盖实现,缺省的情况下,workarea会将添加到form的item以顺序的方式从上自下绘制, 如果需要特殊显示则可以重画workare区域, 但是仍然使用form来完成事件转发,菜单处理。 可以统一设置屏幕的背景,显示字体等,方便美工工作,而且在不同手机上都可以保持一致的现实风格。
根据我的经验,原来midp2中高级ui繁多的layout属性设置其实基本没有意义,各个手机实现有差异。在手机屏幕上,最常见的做法还是一行一个对象,显示最简单有效, 如果需要复杂的显示,则可以对对象进行组合,并能把事件委托到组合对象中进行处理。
所以form中的 Item主要分为2类,基本Item和ItemGroup, 后者由多个item构成,有自己的事件处理机制,便于实现比较复杂的对象布局。
基本使用代码和midp2中一致, 也就是将各种item append 到form中就可以了, 对于一些复杂的item,实现了一个ItemGroup组的概念,可以自行对item进行组合排列,提高显示效果。
另外相对midp 2做了改进, 所以的item都可以触发事件, 只要注册一个Action类就可以,比如
[code] item = new StringItem("电邮", user.getEmail());
item.addAction(new Action() {
public void action(Item event) {
//show email box
}
});
append(item);[/code]
常见的列表不需要特殊实现,只要在form顺序增加item,设置允许滚动, 并加入分割条就可以了。
[attach]522943[/attach]
另外对textField进行了适当扩充, 允许设置显示行数, 也可以设置自动充满屏幕,如下图, 前面4个对象都是1行,最后正文内容可设置为自动充满剩余屏幕。 这样基本在开发表单时,子类不需要考虑使用像素进行屏幕绘制,基本代码编写方式可以和原来的高级ui一致。
[code]public TextField subject = new TextField("主题:", null, 200,
1); //显示1行
public static int MAX_CONTENT_SIZE = 5000;
public TextField content = new TextField("内容:", null, 0,
MAX_CONTENT_SIZE, 1); //0行表示自动充满[/code]
[attach]522944[/attach]
另外菜单部分借鉴了Swing 的事件处理机制进行了重写, 新的菜单使用事件类机制,比较符合桌面应用习惯, 并且能支持多级菜单和分隔条。
[code]
MenuItem childItem = new MenuItem("飞屁屁3");
childItem.addAction(new Action() {
public void action(Item event) {
showMsg("二级菜单摸屁股");
}
});
[/code]
2. 扩展元件库
主要是利用ItemGroup 组合的特性,制造一些比较复杂的item, 比如日历和树。利用基类form提供的事件处理机制,绘制比较复杂的控件也比较容易。
[attach]522945[/attach]
[attach]522946[/attach]
另外提供了一些 desktop 应用常见, 但是 midp中没有的功能, 比如对话框和等待条
[attach]522951[/attach]
3. 高级元件库
主要是提供企业应用里常见的一些文档格式的浏览。 比如word, excel, 图像, 文本等等。
[attach]522947[/attach]
[attach]522948[/attach]
[attach]522949[/attach]
系统菜单form
[attach]522950[/attach]
这套UI的另外一个好处是各个手机平台上显示都完全一致,免去了以前调试command和各种stringitem 的layout的痛苦。
给大家提供一个思路做为参考,欢迎拍砖。
[[i] 本帖最后由 powertoy 于 2008-4-22 10:36 编辑 [/i]]