ITPUB论坛 » 移动与游戏开发 » 呵呵 ,自己实现的一套用于企业应用的Me UI lib


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]]

2008-4-22 10:32 powertoy
另外补充一下, 文档的显示需要先在服务器端进行转换, 转换成自定义的数据结构以后分页传递到手机。 手机端并不需要安装pocket office等工具。

2008-4-23 04:51 greenflute
PFPF :rose::rose:

2008-4-24 22:38 justforregister
牛逼

2008-5-14 22:52 fkecq
学习下

2008-5-15 04:57 ousys
界面很漂亮,学习学习

2008-6-16 11:24 wangjincheng100
有没有源代码阿,给我们看看阿

2008-6-19 17:48 Warren2007
学习……

学习……

2008-8-12 10:14 dearmeiw
没有代码怎么用啊,炫耀贴!

页: [1]


Powered by ITPUB论坛